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

PHP中二维数组转一维遇array_reduce返回空值问题求解

解决PHP二维数组转一维数组的问题

针对你给出的二维数组:

$answers4 = [["1003"],["1002"],["1001"]];

使用array_reduce结合array_merge得到空值数组的问题,这里提供几种可靠的解决方案:

方案一:自定义回调的array_reduce

直接在回调函数中提取每个子数组的唯一元素:

$answers5 = array_reduce($answers4, function($carry, $item) {
    $carry[] = $item[0];
    return $carry;
}, []);

执行后$answers5即为["1003","1002","1001"]。

方案二:array_merge结合数组解包(PHP 5.6+)

利用PHP的数组解包特性,将二维数组的子数组直接作为array_merge的参数:

$answers5 = array_merge(...$answers4);

这种方式代码简洁,适合PHP版本5.6及以上的环境。

方案三:array_column提取固定列

由于每个子数组仅包含一个元素,可通过array_column提取所有子数组的第0列元素:

$answers5 = array_column($answers4, 0);

这是最简洁的实现方式,无需额外回调逻辑。

关于原代码问题的说明

按照你给出的示例数组,理论上array_reduce($answers4, 'array_merge', [])应该能得到正确结果。如果实际返回空值数组,大概率是你的真实数组中子元素并非预期的非空字符串,或是存在其他隐式的数据类型问题。上述三种方案均能规避这类潜在问题,更稳定地实现二维转一维的需求。

内容的提问来源于stack exchange,提问作者Jiří Kopřiva

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 23:43:23