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

如何将多维数组转换为一维数组?附示例数组

嘿,我来帮你搞定多维数组转一维的问题!看你给出的是PHP风格的嵌套数组,下面给你几个实用的方案,按需选择就行:

方法1:递归函数(适配任意嵌套深度)

递归是处理多层嵌套数组的经典方案,不管你的数组嵌套了多少层,它都能把所有元素提取到一维数组里:

function flattenArray($array) {
    $result = [];
    foreach ($array as $item) {
        // 如果当前元素是数组,就递归处理后合并到结果里
        if (is_array($item)) {
            $result = array_merge($result, flattenArray($item));
        } else {
            // 不是数组就直接加入结果
            $result[] = $item;
        }
    }
    return $result;
}

// 你的示例数组(修正了小语法问题)
$multiArray = [
    [907],
    [205, 251, 256, 334, 938],
    [209, 213, 310, 323, 408, 415, 424, 442, 510, 530, 559, 562, 619, 626, 628, 650, 657, 661, 669, 707, 714, 747, 760]
];

// 转换并输出
$flatArray = flattenArray($multiArray);
print_r($flatArray);
方法2:array_reduce + array_merge(适合两层嵌套)

如果你的数组只有两层嵌套(就像你给出的示例),用这个简洁的函数式写法更高效:

$multiArray = [
    [907],
    [205, 251, 256, 334, 938],
    [209, 213, 310, 323, 408, 415, 424, 442, 510, 530, 559, 562, 619, 626, 628, 650, 657, 661, 669, 707, 714, 747, 760]
];

$flatArray = array_reduce($multiArray, function($carry, $item) {
    return array_merge($carry, $item);
}, []);

print_r($flatArray);

它通过array_reduce遍历外层数组,每次把内层数组合并到结果里,代码短且易读。

方法3:PHP内置迭代器(优雅处理任意嵌套)

PHP提供了专门的迭代器来处理递归结构,不需要自己写递归逻辑,代码更简洁:

$multiArray = [
    [907],
    [205, 251, 256, 334, 938],
    [209, 213, 310, 323, 408, 415, 424, 442, 510, 530, 559, 562, 619, 626, 628, 650, 657, 661, 669, 707, 714, 747, 760]
];

// 创建递归数组迭代器
$iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($multiArray));
// 把迭代器转换为一维数组
$flatArray = iterator_to_array($iterator, false);

print_r($flatArray);

这个方法的优势是内置实现,稳定性高,不管数组嵌套多少层都能轻松处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:29:45