Jaka jest kolejność wykonywania kodu przez php przy operacji przypisania wartości do zmiennej? czy najpierw jest obliczana prawa strona a później lewa? Dotychczas myślałem ze jest na odwrót (np przy ifach z andem jeśli pierwszy człon nie spełniał warunku to 2 nie był sprawdzany)
Może trochę kodu dla przykładu:
$response = new stdClass(); $i = 0; foreach ($array as $element ) { $response->rows[$i]['id'] = $i; $i++; } $response = new stdClass(); $i = 0; foreach ($array as $element ) { $response->rows[$i]['id'] = $i; }
Przyznam się, gdyby ktoś mnie zapytał czy powyższy kod wygeneruje 2 razy to samo - potwierdziłbym
wynik jest inny:
object(stdClass)#1 (1) { ["rows"]=> [0]=> ["id"]=> int(0) ["cell"]=> [0]=> int(1) [1]=> string(1) "a" } } [1]=> ["id"]=> int(1) ["cell"]=> [0]=> int(2) [1]=> string(1) "b" } } } } object(stdClass)#2 (1) { ["rows"]=> [0]=> ["id"]=> int(0) } [1]=> ["cell"]=> [0]=> int(1) [1]=> string(1) "a" } ["id"]=> int(1) } [2]=> ["cell"]=> [0]=> int(2) [1]=> string(1) "b" } } } }
Wychodzi na to ze linia
jest wykonywana od tyłu (najpierw część na prawo od = a potem lewa). Ok czy to jest jakiś magiczny feature, czy ja po prostu nie umiem znaleźć w dokumentacji zadnych szczegółów na ten temat?