如何将多维数组转换为一维数组?附示例数组
嘿,我来帮你搞定多维数组转一维的问题!看你给出的是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
相关产品推荐
相关产品推荐

