PHP无需if语句、根据变量是否定义动态初始化数组的简洁语法求解
PHP 动态构建无冗余可选元素数组的简化写法
推荐写法(PHP 7.4+ 支持数组展开语法)
$fooArr = [$bar1, ...(isset($bar2) ? [$bar2] : [])];
逻辑说明:当$bar2已定义且非null时,展开[$bar2]将元素追加到数组;未定义时展开空数组,不会产生多余占位元素。
如果存在多个可选元素,直接追加对应规则即可,无需重复编写固定元素,完美解决多元素场景的冗余问题:
// 多可选元素场景示例 $fooArr = [ $bar1, ...(isset($bar2) ? [$bar2] : []), ...(isset($bar3) ? [$bar3] : []), ...(isset($bar4) ? [$bar4] : []), ...(isset($bar5) ? [$bar5] : []) ];
兼容低版本PHP(PHP 5.6+ 支持)
用array_merge实现完全一致的逻辑:
$fooArr = array_merge([$bar1], isset($bar2) ? [$bar2] : []);
特殊场景适配
如果业务允许变量值为null,且需要保留值为null的合法元素,可将isset替换为array_key_exists('bar2', get_defined_vars()),该判断只会检测变量是否定义,不会因为值为null返回false:
$fooArr = [$bar1, ...(array_key_exists('bar2', get_defined_vars()) ? [$bar2] : [])];
内容的提问来源于stack exchange,提问作者cr001
相关产品推荐
相关产品推荐

