我的系统向这样的函数发送一个配置数组:
callThatFunction( array(k1 => v1, k2 => v2, ... kn=vn));
我想根据某些情况制作一个键值对。
我可以在不为数组创建变量的情况下执行此操作吗(这会破坏其他人创建的干净配置语法)?
像这样
callThatFunction ( array(
k1 => v1,
if($cond( {k2 => v2,}
...
kn=vn));
上面明显语法错误,但应该表达了我的想法。
谢谢
最佳答案
您可以使用条件运算符 cond ? true-expr : false-expr
:
$someConfig = array(
'k1' => 'v1',
'k2' => $cond ? 'v2a' : 'v2b'
);
条件表达式 $cond ? 'v2a' : 'v2b'
将产生 'v2a'
如果 $cond
评估为 true 和 'v2b'
否则。但这仅适用于键的值。
如果只想根据条件添加键,则需要使用单独的if
:
$someConfig = array('k1' => 'v1');
if ($cond) {
$someConfig['k2'] = 'v2';
}
编辑 您可以使用 array union operator 在没有变量的情况下有条件地添加键或 array_merge
:
array('k1' => 'v1') + ($cond ? array('k2' => 'v2') : array())
array_merge(array('k1' => 'v1'), $cond ? array('k2' => 'v2') : array())
现在您需要决定什么更具可读性或更好地维护。
关于php - array(...) 构造中的条件元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4118875/