关联数组中的 PHP 三元语句设置键和值?

标签 php arrays ternary-operator

我已经搜索和测试了一段时间,只是找不到我想要完成的事情是否可以按照我正在做的方式实现。

我想在定义数组时根据三元语句向数组添加键/值对。

Array(
    'Item 1' => 'Some value',
    (FALSE)? NULL : 'Item 2' => 'Another Value'
)

我期望/想要的行为是这样的结果:

Array (
  [Item 1] => Some value
  [Item 2] => Another Value
)

当语句为真时:

Array(
    'Item 1' => 'Some value',
    (TRUE)? NULL : 'Item 2' => 'Another Value'
)

产量:

Array (
  [Item 1] => Some value
)

但我得到的是:

Array (
  [Item 1] => Some value
  [] => Another Value
)

这会导致问题,因为 A) 我不希望这个第二个元素首先存在,并且 B) 假条件值被分配给真条件值(在本例中为 NULL,它将键设置为 NULL [ ])

这很奇特。我唯一的选择是使用标准 if(){} 语句并在条件为假时将元素弹出(通过使用 !)到数组中吗?

注意:项目 2 的空值是 Not Acceptable ,如果初始条件为真,则根本不应存在任何元素。

如有任何帮助,我们将不胜感激!

最佳答案

您使用该三元运算符所做的只是确定键名。无论如何,该元素都会被放入数组中,它就在数组文字声明中。

你可以用内联表达式做的最好的事情是这样的:

['foo' => 'bar'] + (true ? [] : ['baz' => 42])

实际上,你最好这样写:

$arr = ['foo' => 'bar'];
if (true) {
    $arr['baz'] = 42;
}

编写更紧凑的代码并不总是最好的目标,它首先需要可读性和可理解性。

关于关联数组中的 PHP 三元语句设置键和值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28378554/

相关文章:

javascript - 三元运算符在 react js 渲染函数中不起作用

php - Paypal IPN 没有响应,只有 "Connection Close"

homebrew - 停止 "php-fpm"( Homebrew 安装)Mac OSX 10.8.2

php - 尝试在PHP中使用全局异常处理程序来统一处理各种顶级异常

c - 字符串在边界后打印

swift - 三元运算符结合性

php - 以 csv 格式导入和导出所有类别

ios - 根据对象的属性减去两个对象数组

python - 从数组值动态填充 numpy 矩阵?

c - 弄清楚三元运算符级联的功能?