Исеть встроенные условия не работает
Я использую встроенное условие, чтобы получить какое-то значение, но я не понимаю, почему оно не возвращает правильное значение. я хочу получить false
значение, но это возвращение test
, Что я делаю не так? Я искал в вопросах, но я не нашел, почему мой сценарий не работает. Благодарю.
Это сценарий,
$val1 = null;
$val2 = false;
$val3 = 0;
$val4 = "test";
$newValue = isset($val1) ? $val1 : isset($val2) ? $val2 : isset($val3) ? $val3 : isset($val4) ? $val4 : -1;
var_dump($newValue); // print test
2 ответа
Вы должны окружить свои тесты, используя скобки ()
:
$newValue = isset($val1) ? $val1 : (
isset($val2) ? $val2 : (
isset($val3) ? $val3 : (
isset($val4) ? $val4 :
-1
)
)
) ;
var_dump($newValue) ; // Outputs : bool(false)
Начиная с PHP 7.0, вы можете использовать оператор объединения нулей, используя ??
персонажи:
$newValue = $val1 ?? $val2 ?? $val3 ?? $val4 ?? -1 ;
var_dump($newValue) ; // Outputs : bool(false)
Хотя не сложный код, просто хочу добавить:
При использовании троичного оператора избегайте вложения или суммирования ваших операций, даже если вам удобно их использовать, поскольку это может привести к очень запутанному коду и неинтуитивным результатам. Все еще лучше использовать операторы if для сложных ситуаций.(Www.sitepoint.com)
if (isset($val1)) {
$newValue = $val1;
}elseif (isset($val2)) {
$newValue = $val2;
}elseif (isset($val3)) {
$newValue = $val3;
}elseif (isset($val4)) {
$newValue = $val4;
}
var_dump($newValue);