我已经搜索和测试了一段时间,只是找不到我想要完成的事情是否可以按照我正在做的方式实现。
我想在定义数组时根据三元语句向数组添加键/值对。
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/