php - array(...) 构造中的条件元素

标签 php

我的系统向这样的函数发送一个配置数组:

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/

相关文章:

php - 如何使用php计算while循环内的重复值

php - Symfony2 将复选框值从 0/1 更改为 'no'/'yes'

php - 使用 MySQLi 进行无缓冲查询?

php - Zend 选择 NOT IN

php - 在 WordPress 中添加侧边栏

javascript - PHP正则表达式从JS函数中提取经纬度

php - 存储 Zend 子类

php - 支持 PHP 7 的 Google App Engine

php - 创建一个电子邮件地址用户名

php - 查询以获取关于其发票编号具有相同日期的所有行?