有条件地分配 PHP 值
2022-08-30 18:17:20
对于根据表达式的结果为变量赋值的常见情况,我是三元运算符的粉丝:
$foo = $bar ? $a : b;
但是,如果$bar是一个相对昂贵的操作,并且我想将$bar的结果分配给$foo如果结果是真实的,这是低效的:
$foo = SomeClass::bigQuery() ? SomeClass::bigQuery() : new EmptySet();
一个选项是:
$foo = ($result = SomeClass::bigQuery()) ? $result : new EmptySet();
但我宁愿没有多余的东西坐在记忆中。$result
我得到的最好的选择是:
$foo = ($foo = SomeClass::bigQuery()) ? $foo : new EmptySet();
或者,如果没有三元运算符:
if(!$foo = SomeClass::bigQuery()) $foo = new EmptySet();
或者,如果程序流运算符不是您的样式:
($foo = SomeClass::bigQuery()) || ($foo = new EmptySet());
这么多的选择,没有一个真正令人满意。你会使用哪个,我在这里错过了一些非常明显的东西吗?