php if/else简写失败

nxe*_*xet 2 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
Run Code Online (Sandbox Code Playgroud)

谢谢

Ste*_*eve 6

尝试围绕第二个速记块添加额外的括号, $value = (isset($var)) ? $var : (($str !== 'string') ? $str : null);

添加了此旁注...

虽然尝试将代码压缩到一行很有趣,但通常最好将其写出来以便于阅读.你的代码行很紧凑但需要一段时间来消化,而......

if (isset($var)) {
   $value = $var;
}
else if ($str !== 'string') {
   $value = $str;
}
else {
   $value = null;
}
Run Code Online (Sandbox Code Playgroud)

...非常清楚发生了什么 - 当你回顾你的代码时,你会在几个月内感谢自己:)