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

PHP中存在null数组时如何正确合并多个数组?

解决array_merge_recursive遇null数组失效的问题

嗨,这个问题的核心原因是当$array1/$array2/$array3其中任意一个为null时,你直接访问$arrayX['results']会触发PHP警告,而且array_merge_recursive函数不接受null作为参数,最终导致整个合并结果变成null,自然json_encode后输出null。

解决方案思路

我们需要先对每个数组做安全处理:

  1. 确保json_decode返回null时,把数组初始化为空数组;
  2. 安全提取results部分,即使原数组没有这个键,也返回空数组;
  3. 最后用合适的合并函数完成拼接(你的场景用array_merge更合适,因为只是拼接一维元素)。

完整代码示例

// 处理每个json_decode结果,null时替换为空数组
$array1 = json_decode($array1, TRUE) ?? [];
$array2 = json_decode($array2, TRUE) ?? [];
$array3 = json_decode($array3, TRUE) ?? [];

// 安全提取results字段,不存在则返回空数组
$results1 = $array1['results'] ?? [];
$results2 = $array2['results'] ?? [];
$results3 = $array3['results'] ?? [];

// 合并所有results元素(array_merge足够满足你的拼接需求)
$array4 = array_merge($results1, $results2, $results3);

// 输出最终结果
echo json_encode($array4);

代码解释

  • ?? []是PHP7+的空合并运算符,当json_decode返回null(比如原JSON无效、为空)时,自动将变量设置为空数组,避免后续访问键值时出错;
  • $array['results'] ?? []确保即使数组中没有results键,也能得到一个空数组,不会抛出"Undefined index"警告;
  • 为什么用array_merge而不是array_merge_recursive?因为你的需求是把多个results数组里的独立元素拼接在一起,array_merge会直接合并索引数组的元素,而array_merge_recursive主要用于处理有相同键名的关联数组递归合并,在这里是多余的。

这样处理后,即使其中一个或多个原数组为null,合并操作依然能正常执行,输出的结果只会包含有效数组的results元素。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:25:44