【发布时间】:2015-04-07 08:23:53
【问题描述】:
我已经搜索和测试了一段时间,只是找不到我想要完成的事情是否可以按照我的方式进行。
我想在定义数组时基于三元语句向数组添加键/值对。
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)将 False 条件值分配给 True 条件值(在本例中为 NULL,它将键设置为 NULL [ ])
这很奇怪。我唯一的选择是有一个标准的 if(){} 语句并在条件为假时将元素弹出(通过使用!)到数组中?
注意:第 2 项的值为空是不可接受的,如果初始条件为真,则根本不应该存在任何元素。
任何帮助将不胜感激!
【问题讨论】:
-
99% 确定这是不可能的,也就是说,您需要使用
if。我会再考虑一下,看看我能不能做得更好。 -
不可能。要么将元素添加到数组中,要么不添加;没有办法像这样有条件地做到这一点。无论如何,使用
if语句到底有什么问题......?它完美地完成了这项工作(有些人甚至会说它比三元更直观)。 -
它实际上是is possible,但你通常不想这样做。 /cc @奥斯汀
标签: php arrays ternary-operator