You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 15:45:11