php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2009

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 21.08.2009, 17:56  
Neuer Benutzer
 
Registriert seit: 21.08.2009
Beiträge: 1
PHP-Kenntnisse:
Anfänger
krazun befindet sich auf einem aufstrebenden Ast
Standard Implizite Typkonvertierung / Operator-Rangfolge

Hallo,

habe eine kleine Verständnisfrage und konnte hier im Forum, im PHP Handbuch und bei google nichts finden was mir weiter geholfen hat.

PHP-Code:
$zahl1=10;
$zahl2=2;

$ergebnis="Ergebnis: " .$zahl1+=$zahl2;
echo 
$ergebnis
Als Ergebnis erhält man: "Ergebnis: 12" (Datentyp:String)

Der "."-Operator für Zeichenkettenverknüpfungen hat laut der Offiziellen Tabelle für Operator-Rangfolgen aus dem PHP-Handbuch einen höheren Rang als Zusammengesetzte Operatoren. Demzufolge müsste zuerst "Ergebnis: " (String) mit 10 (INT) verknüpft werden. Dann "Ergebnis: 10" (string) += 2 (INT) gerechnet werden. Da PHP das mit falschen Datentypen nicht so eng sieht macht er aus dem String eine 0, da er Zahlen bei Berechnungen nur aus Zeichenketten rausfiltert , wenn sie am Anfang der Zeichenkette stehen (der rest wird dann einfach abgeschnitten).

Das Ergebnis müsste also "2" sein. Bei anderen Operatoren funktioniert das wie erwartet. Wenn man z.b. $zahl1+$zahl2 rechnet, verhält es sich wie man anhand der Operator-Rangfolgen erwarten würde.

Wo ist mein Denkfehler?

Mal abgesehen davon das man so nicht programmiert: Es geht mir nur um das Verständnis darum wie PHP sich bei impliziter Typkonvertierung verhält und bei allen anderen Berechnungen war der das Verhalten / Der Fehler nachvollziehbar.
krazun ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 21.08.2009, 18:01  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Das kann schon deswegen nicht gehen, weil += und Co nur mit Variablen funktionieren

PHP-Code:
<?

$a 
+= 2// Parse error: syntax error, unexpected T_PLUS_EQUAL in ...
var_dump ($a);
Bei einem anderen Kanddaten aus der unteren Liga funktioniert das durchaus wie erwartet:
PHP-Code:
<?

$a 
'a' 
var_dump ($a); // int(1)
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--

Geändert von nikosch (21.08.2009 um 18:06 Uhr).
nikosch ist gerade online  
Alt 23.08.2009, 06:19  
Erfahrener Benutzer
 
Benutzerbild von Phoscur
 
Registriert seit: 01.12.2008
Beiträge: 450
PHP-Kenntnisse:
Fortgeschritten
Phoscur wird schon bald berühmt werdenPhoscur wird schon bald berühmt werden
Standard

Ich schätze += gehört nicht nur zu den gesammengesetzten Operatoren, sondern ist auch eine Zuweisung, die immer vor geht.
__________________
Phoscur ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
implizite typkonvertierung, datentyp umwandlung implizit,php, php implizite typumwandlung, php typkonvertierung, implizite typumwandlung php, implizite typkonvertierung php, typkonvertierung php, impliziete datentypen php, type konvertierung, unexpected t_plus_equal, php operator-rangfolge, implizite typenkonvertierung php, php implizite typkonvertierung, php typenkonvertierung, php impliziter variablentyp (int), php implizierte typenknvertierung, impliziter operator, impliziten typkonvertierungen, unexpected t_plus_equa, php automatische typumwandlung

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:47 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum