оператор if — php if / else fail

Нормальное выражение работает нормально, стенография — нет. Где я тут не прав?

if (isset($var)) $value = $var;
elseif ($str !== 'string') $value = $str;
else $value = null;
// works just fine

$value = (isset($var)) ? $var : ($str !== 'string') ? $str : null;
// only returns $value = $str

Спасибо

2

Решение

Попробуйте с дополнительным набором скобок вокруг второго сокращенного блока, $value = (isset($var)) ? $var : (($str !== 'string') ? $str : null);

Добавил эту заметку …

Хотя пытаться сжать код в одну строку — это весело, часто лучше написать его так, чтобы его было легко читать. Ваша строка кода компактна, но требует переваривания, тогда как …

if (isset($var)) {
$value = $var;
}
else if ($str !== 'string') {
$value = $str;
}
else {
$value = null;
}

… очень ясно дает понять, что происходит — через несколько месяцев вы поблагодарите себя, когда будете оглядываться на свой код 🙂

6

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]