nie jestem w stanie pojąć logikę oceny w kodzie podanym poniżej. Czy ktokolwiek wie, dlaczego PHP ocenia inaczej $b
i $b = $b
w tym przypadku?
Czytałem poprzez liczne pytania tutaj na SO i sprawdził PHP manual. Czyniąc to Doszedłem do zrozumienia, że „PHP nie robi (w ogólnym przypadku) określić, w jakiej kolejności wyrazem jest oceniany” i że „zachowanie może zmienić między wersjami PHP, lub w zależności od otaczającego kodem” . Nie sądzę jednak, aby miało to zastosowanie do tej sytuacji. Czy to prawda?
Jako pierwszy przyznać się do tego nie może być codziennego problem kodowania, wciąż jestem ciekawy. Natknąłem się na to, próbując zrobić jakieś code golfing.
$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;
Wyjście - PHP 5.5.14:
32
22
Co php mówi, że nie gwarantuje porządku jak matematyczny porządek operacji. Może mieć taką samą kolejność w każdej aktualnej wersji i systemie i działać dokładnie tak samo. Mówią, że zmiana w późniejszej wersji może zmienić wynik i nie gwarantują, że zawsze będzie działać tak samo. –