Ich bin nicht in der Lage, die Auswertelogik in dem unten aufgeführten Code zu erfassen. Weiß jemand, warum PHP in diesem Fall $b
und $b = $b
unterschiedlich auswertet?
Ich habe eine Reihe von Fragen hier bei SO gelesen und überprüfte die PHP manual. Dabei habe ich verstanden, dass "PHP nicht (im allgemeinen Fall) angeben, in welcher Reihenfolge ein Ausdruck ausgewertet wird" und dass "das Verhalten zwischen Versionen von PHP oder abhängig von der umgebenden Code" . Ich glaube aber nicht, dass dies auf diese Situation zutrifft. Oder tut es?
Als der erste, zuzugeben, dass dies nicht Ihre alltägliche Codierung Problem sein kann, bin ich immer noch neugierig. Stolperte über das Versuchen, etwas code golfing zu tun.
$a = [[00, 01, 02, 03],
[10, 11, 12, 13],
[20, 21, 22, 23],
[30, 31, 32, 33]];
$b = 2;
echo $a[$b][$b++], PHP_EOL;
$b = 2;
echo $a[$b=$b][$b++], PHP_EOL;
Ausgang - PHP 5.5.14:
32
22
Was php sagt ist, dass es keine Ordnung wie mathematische Reihenfolge der Operationen garantiert. Es kann in jeder aktuellen Version und in jedem System die gleiche Reihenfolge haben und genauso funktionieren. Sie sagen, dass eine Änderung in einer späteren Version das Ergebnis ändern könnte und sie werden nicht garantieren, dass es immer gleich funktioniert. –