有条件地在数组中添加元素

use*_*340 8 php arrays conditional conditional-operator

我怎样才能'b' => 'xyz'在array()语句中有条件地添加下面的数组?

$arr = array('a' => abc)

三元运算符不允许我这样做

PiT*_*ber 13

PHP 8.1中,您可以通过数组解包来做到这一点:

$arr = [
    'foo' => 'bar', 
    ...($condition ? ['baz' => 'boo' ] : []),
];
Run Code Online (Sandbox Code Playgroud)

请参阅https://php.watch/versions/8.1/spread-operator-string-array-keys


Fel*_*ing 7

你需要两个步骤:

$arr = array('a' => 'abc');

if(condition) {
    $arr['b'] = 'xyz';
}
Run Code Online (Sandbox Code Playgroud)


And*_*son 7

$a = array('a' => 'abc') + ($condition ? array('b' => 'xyz') : array());
Run Code Online (Sandbox Code Playgroud)


Ben*_*Ben 6

这是一个老问题,但您可以使用 array_merge 完成此操作:

array_merge(['foo' => 'bar'], $condition ? ['baz' => 'boo' ] : []);
Run Code Online (Sandbox Code Playgroud)