PHP üçlü operatörünü kullanmakta oldukça yetenekliyim. Ancak aşağıdaki kodun if-else eşdeğer yapısıyla niçin uyuşmadığını anlamaya çalışırken bir barikata çarptım. Test farklı sayılarda üç kez çalıştırıldı. Her yapının çıkışı kodun altında.iç içe geçmiş php üçlü sıkıntı: ternary output! = If - else
Üçlü:
$decimal_places = ($max <= 1) ? 2 : ($max > 3) ? 0 : 1;
Üçlü Çıktı:
max: -100.000 ondalık: 0
max: 0,48 ondalık: 0
max: 0.15 ondalık: 0
If-Else
if($max <= 1)
$decimal_places = 2;
elseif($max > 3)
$decimal_places = 0;
else
$decimal_places = 1;
If-Else Çıkışı:
max: -100.000 ondalık: 2
max: 0,48 ondalık: 2
max: 0.15 ondalık: 2
Lütfen bu iki kontrolün neden olduğunu söyler misiniz? Yapılar aynı verileri vermiyor mu?
Üçlü operatörlerin yuvalanmasının iyi bir fikir olmamasının bir nedeni –
Tam olarak eşdeğer değiller. Tüm diğer şey, üçlü yapıya kısa devre yapacak. Ayrıca iç içe olmaları gerekmiyor. –
[PHP Üçlü Operatörler El Kitabı] 'dan (http://de3.php.net/manual/en/language.operators.comparison.php#language.operators.comparison.ternary): "İstiflemeden" kaçınmanız önerilir. "Üçlü ifadeler. PHP'nin tek bir deyim içinde birden fazla üçlü operatör kullanırken davranışı açık değildir. – Gordon