如何重新排序多维数组:将子数组移至各层级元素列表底部
递归重排嵌套数组:非数组元素前置,子数组后置
针对你遇到的多层嵌套数组排序需求——每个层级里非数组元素放前面,子数组移到最后,这里提供一个通用的递归解决方案,不用硬编码特定键名,适配任意嵌套层级:
function reorderArray($array) { $nonArrayItems = []; $arrayItems = []; foreach ($array as $key => $value) { if (is_array($value)) { // 递归处理子数组,确保内层也符合排序规则 $arrayItems[$key] = reorderArray($value); } else { $nonArrayItems[$key] = $value; } } // 先合并非数组元素,再合并处理后的子数组 return array_merge($nonArrayItems, $arrayItems); }
函数说明:
- 分组遍历:遍历当前数组,把元素分成两组——非数组类型(字符串、数字、null等)和数组类型。
- 递归处理:对所有子数组递归调用本函数,保证内层嵌套的数组也能完成同样的排序。
- 合并结果:保留两组内元素的原有顺序,先放非数组元素,再放处理好的子数组,完全符合你的期望格式。
使用示例:
把你的目标数组传入函数即可:
$reorderedArray = reorderArray($yourOriginalArray);
这个方案比你之前的临时方法更灵活,不需要针对特定键名写逻辑,不管数组嵌套6-8层还是更多,也不管键名怎么变化,都能自动处理。
内容的提问来源于stack exchange,提问作者startingout
相关产品推荐
相关产品推荐

