php if/else速记失败

php if/else速记失败,php,if-statement,shorthand-if,Php,If Statement,Shorthand If,正常表达很好,速记不行。我哪里错了 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 谢谢尝试在第二个速记块周围加上一组括号,

正常表达很好,速记不行。我哪里错了

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

谢谢

尝试在第二个速记块周围加上一组括号,
$value=(isset($var))$变量:($str!='string')?$str:null)

添加了此旁注…

虽然将代码压缩成一行很有趣,但通常最好是将其写出以便易于阅读。您的代码行很紧凑,但需要一段时间来消化,而

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

。。。非常清楚发生了什么-几个月后,当您回顾代码时,您会感谢自己:)

尝试将最后一部分包装在
()
中,如下所示:
$value=(isset($var))$变量:($str!='string')?$str:null)废话!我不知道速记也可以嵌套,谢谢史蒂夫@史蒂夫:回答得好:)我附议,速记可以,但为了可读性,避免使用速记,尤其是嵌套时