如何在array()语句中有条件地将'b' => 'xyz'添加到下面的数组中?$arr = array('a' => abc)三元运算符不让我这么做。
'b' => 'xyz'
$arr = array('a' => abc)
kh212irz1#
$a = array('a' => 'abc') + ($condition ? array('b' => 'xyz') : array());
2sbarzqh2#
您需要两个步骤:
$arr = array('a' => 'abc'); if(condition) { $arr['b'] = 'xyz'; }
agxfikkp3#
这是一个老问题,但是你可以用array_merge来完成:
array_merge(['foo' => 'bar'], $condition ? ['baz' => 'boo' ] : []);
tcbh2hod4#
$arr = array('a' => 'abc'); if ($condition_required_for_b_to_be_put_in_the_array) { $arr['b'] = 'xyz'; }
如果您 * 真的 * 想使用三元运算符:
$arr = array('a' => 'abc', $condition ? 'b' : '' => $condition ? 'xyz' : ''); $arr = array_filter($arr);
e5nszbig5#
不知道你在问什么;为什么不呢
if (condition) { $arr['b'] = 'xyz'; }
2izufjch6#
在PHP 8.1中,您可以使用数组解包来完成此操作:
$arr = [ ['foo' => 'bar'], ...($condition ? ['baz' => 'boo' ] : []), ];
参见https://php.watch/versions/8.1/spread-operator-string-array-keys
lnlaulya7#
三元表示三个项。你必须有一个条件,一个真部分和一个假部分。它代替if condition then true part else false part。你不能省略第三部分。在5.3中有一个快捷方式,允许你省略真部分,如果条件也可以用作真部分,但它仍然有三个项。
7条答案
按热度按时间kh212irz1#
2sbarzqh2#
您需要两个步骤:
agxfikkp3#
这是一个老问题,但是你可以用array_merge来完成:
tcbh2hod4#
如果您 * 真的 * 想使用三元运算符:
e5nszbig5#
不知道你在问什么;为什么不呢
2izufjch6#
在PHP 8.1中,您可以使用数组解包来完成此操作:
参见https://php.watch/versions/8.1/spread-operator-string-array-keys
lnlaulya7#
三元表示三个项。你必须有一个条件,一个真部分和一个假部分。它代替if condition then true part else false part。你不能省略第三部分。在5.3中有一个快捷方式,允许你省略真部分,如果条件也可以用作真部分,但它仍然有三个项。