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

如何重新排序多维数组:将子数组移至各层级元素列表底部

递归重排嵌套数组:非数组元素前置,子数组后置

针对你遇到的多层嵌套数组排序需求——每个层级里非数组元素放前面,子数组移到最后,这里提供一个通用的递归解决方案,不用硬编码特定键名,适配任意嵌套层级:

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);
}

函数说明:

  1. 分组遍历:遍历当前数组,把元素分成两组——非数组类型(字符串、数字、null等)和数组类型。
  2. 递归处理:对所有子数组递归调用本函数,保证内层嵌套的数组也能完成同样的排序。
  3. 合并结果:保留两组内元素的原有顺序,先放非数组元素,再放处理好的子数组,完全符合你的期望格式。

使用示例:

把你的目标数组传入函数即可:

$reorderedArray = reorderArray($yourOriginalArray);

这个方案比你之前的临时方法更灵活,不需要针对特定键名写逻辑,不管数组嵌套6-8层还是更多,也不管键名怎么变化,都能自动处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 16:27:42