Operator trójskładnikowy opuścił asocjatywność
W podręczniku PHP znajdujęnastępujący „wpis wniesiony przez użytkownika” w „Operatorzy”.
Zauważ, że w php operator trójskładnikowy?: Ma powiązanie lewe w przeciwieństwie do C i C ++, gdzie ma odpowiednią asocjatywność.
Nie możesz pisać kodu w ten sposób (jak mógłbyś się przyzwyczaić w C / C ++):
<?php
$a = 2;
echo (
$a == 1 ? 'one' :
$a == 2 ? 'two' :
$a == 3 ? 'three' :
$a == 4 ? 'four' : 'other');
echo "\n";
// prints 'four'
Właściwie to próbuję i to naprawdę drukujefour
. Jednak nie mogłem zrozumieć przyczyny tego problemu i nadal czuję, że powinien on zostać wydrukowanytwo
lubother
.
Czy ktoś może wyjaśnić, co tu się dzieje i dlaczego drukuje „cztery”?