如何在PHP数组初始化时条件性创建字段?
PHP数组条件添加元素的写法可行性分析
你想直接在数组定义里写 if($bar !== null) 'y' => $bar 这种写法是不可行的,PHP不支持这种语法,这么写会直接触发语法错误。
不过有几种简洁的替代方案可以实现你要的效果,不需要先创建数组再手动添加或删除元素:
方案一:数组展开运算符(PHP 7.4+)
这是最简洁的写法,利用PHP的数组展开特性:
$foo = [ 'x' => 'asdf', ...($bar !== null ? ['y' => $bar] : []), ];
当$bar不为null时,展开包含'y'元素的数组;如果$bar是null,则展开空数组,相当于不会添加这个元素。
方案二:数组合并运算符
用数组合并的方式也能实现:
$foo = ['x' => 'asdf'] + ($bar !== null ? ['y' => $bar] : []);
+运算符会将后面数组的元素合并到前面的数组中,当后面是空数组时,不会新增任何元素。
方案三:处理$bar未定义的情况
如果$bar可能存在未定义的情况,可以用isset()判断:
$foo = [ 'x' => 'asdf', ...(isset($bar) ? ['y' => $bar] : []), ];
这样能避免$bar未定义时触发的报错。
内容的提问来源于stack exchange,提问作者klutt
相关产品推荐
相关产品推荐

