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

如何仅在变量$bar已设置时为JSON数组添加嵌套键foo?

解决方法

你原来的写法之所以没用,是因为$bar ?? null只是把未定义的$bar替换成null,但foo键依然会留在key2的数组里,而你需要的是完全不添加这个键。下面给两种实用的实现方式:

方法一:分步构建数组

先创建key2的基础结构,再根据条件追加foo键:

// 先初始化key2的基础数据
$key2Data = [
    "key3" => "value3",
    "key4" => "value4"
];

// 仅当$bar已设置且是数组时,添加foo键
if (isset($bar) && is_array($bar)) {
    $key2Data["foo"] = $bar;
}

// 把完整数据加入json数组
$json[] = [
    "key1" => "value1",
    "key2" => $key2Data
];

方法二:用数组合并简化写法

利用array_merge结合三元运算符,一次性构建数组:

$json[] = [
    "key1" => "value1",
    "key2" => array_merge(
        [
            "key3" => "value3",
            "key4" => "value4"
        ],
        // 条件满足时合并带foo的数组,否则合并空数组
        (isset($bar) && is_array($bar)) ? ["foo" => $bar] : []
    )
];

两种方法都能实现:只有当$bar已定义且是数组类型时,key2里才会出现foo键,否则完全不包含这个键。

内容的提问来源于stack exchange,提问作者pileup

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 12:06:29