Nasıl iç içe üçlü operatörlerin bir çift kullanmaya ne dersiniz?
Benim için bu sorunla başa çıkmak için en kolay yoludur. Iç içe geçmiş üçlü operatörleri kullanabilirsiniz beri ve gerekirse daha fazla denetim eklemek gerekir.
$var = isset($var) ? $var : ($i=check1()) ? $i : ($i=check2()) ? $i : "default" ;
Bu kodun hemen hemen aynı miktarda bulunuyor ve ben seni yanlış ettik sürece .. çalışması gerekir. Bu durumda eğer üzgünüm.
Eğer örnek olarak yayınlanan orijinal kodu ile karşılaştırıldığında, uzunluğu hemen hemen aynıdır:
$result = null; $result ||= check1(); $result ||= check2(); $result ||= "default";
- vs -
$var = isset($var) ? $var : ($i=check1()) ? $i : ($i=check2()) ? $i : "default" ;
İçiçe üçlü operatörler biraz kafa karıştırıcı olabilir, bu nedenle burada yorumlarla ile var:
// Is $var set?
$var = isset($var) ?
// TRUE: It is, use $var
$var :
// FALSE: $var is not set, run check1
( $i=check1() ) ?
// TRUE: the function check1 returned valid data
$i :
// FALSE: the function check1 returned null or false, run check2
($i=check2()) ?
// TRUE: the function check2 returned valid data
$i :
// FALSE: the function check1 returned null or false, set default value
"default" ;