使用isset()
,您可以执行以下操作:
$foo = [];
$baz = [];
$bar = isset($foo['bar'], $baz[$foo['bar']]) ? $baz[$foo['bar']] : '';
是否可以通过空合并实现相同的目标?
$bar = ($foo[$bazz['foo']]) ?? ''; //Undefined variable: bazz
我期望$bar
是:
$bar = '';
答案 0 :(得分:1)
如果不确定是否存在变量/数组元素,则需要使用isset以避免错误。您可以使用@运算符来避免显示错误消息,但是错误将不会显示,但仍然会发生。尽可能避免使用@运算符。
答案 1 :(得分:1)
该问题的简单答案是,仅由于运算符仅将1个参数传递给isset()且需要传递多个参数,您就无法使用??
实现相同的行为。
使用@
的解决方案确实很糟糕,应该避免。因此,我建议甚至使用isset()
甚至可以提高代码的可读性。
答案 2 :(得分:1)
您必须两次使用??
运算符。
$foo = [];
$baz = [];
$bar = $baz[$foo['bar'] ?? ''] ?? '' ;