2

通常の表現は正常に機能しますが、速記は機能しません。ここでどこが間違っていますか?

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

ありがとう

4

1 に答える 1

6

2 番目の速記ブロックの周りに追加のブラケット セットを試してみてください。$value = (isset($var)) ? $var : (($str !== 'string') ? $str : null);

この補足を追加しました...

コードを 1 行に詰め込むのは楽しいですが、読みやすいように書き出す方がよい場合がよくあります。あなたのコード行はコンパクトですが、消化するのに時間がかかります...

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

...何が起こっているのかを非常に明確にします-数か月後にコードを振り返ると、感謝するでしょう:)

于 2016-02-05T10:46:36.897 に答える