Temelde tercüman yüzden, soldan sağa bu ifadeyi değerlendirir:
echo $test == 'one' ? 'one' : $test == 'two' ? 'two' : 'three';
echo ($test == 'one' ? 'one' : $test == 'two') ? 'two' : 'three';
olarak yorumlanır Ve paratheses içinde ifade hem 'one' ve 'iki yana doğru olarak değerlendirilir 'null/o/diğer yanlış biçimi değildir. o şekilde görünecektir Yani eğer :
echo $test == 'one' ? FALSE : $test == 'two' ? 'two' : 'three';
Üç kişi basacaktır. Tamamen çalışmasını sağlamak için, üçlü operatörleri birleştirmeyi unutmamalı ve daha karmaşık mantık için düzenli ifs/switch kullanmalı veya en azından parantezleri kullanmalı, tercüman mantığınızı anlayacaktır ve standart LTR yolunda kontrol gerçekleştirmeyecektir:
echo $test == 'one' ? 'one' : ($test == 'two' ? 'two' : ($test == 'three' ? 'three' : 'four'));
//etc... It's not the most understandable code...
//You better use:
if($test == 'one')
echo 'one';
else { //or elseif()
...
}
//Or:
switch($test) {
case 'one':
echo 'one';
break;
case 'two':
echo 'two';
break;
//and so on...
}
... gözlerim ... yanıyor .... oh my o görünmeyen olamaz ... –
o var hiç fena değil. Diğer dillerde bu bir deyim olurdu. PHP'de, kötü seçilmiş operatör birliği sayesinde, bu bir tuzak. – bobince
@bobince bunu diğer dillerde de denediniz ya da sadece bu – nik