首页 > 解决方案 > php排序多嵌套数组

问题描述

我在使用嵌套数组等对数组进行排序时遇到问题。数组看起来像这样:

$array = array(
    "item" => array(
            "childs" => array(
                01 => array(
                    "name" => "Min",
                    "content" => "CC",
                    "number" => "111"
                ),
                02 => array(
                    "name" => "Min",
                    "content" => "BB",
                    "number" => "101"
                ),
                03 => array(
                    "name" => "Min",
                    "content" => "AA",
                    "number" => "115"
                ),
                04 => array(
                    "name" => "Min",
                    "content" => "BB",
                    "number" => "100"
                ),
            )
        ),
    );

我想按 CONTENT 和 NUMBER 对该数组(具体的孩子)进行排序。这是我的代码:

foreach ($array as $item) {
    foreach($item as $childs) {
        $row = array();
        $number = array();
        foreach($childs as $child) {
            $row[] = $child["row"];
            $number[] = $child["number"];
        }
        array_multisort($number, SORT_ASC, SORT_NUMERIC, $row, SORT_ASC, $childs);
    };
};

但这似乎不起作用。我没有错误,但数组未排序。有人可以帮帮我吗?

标签: phpsorting

解决方案


我猜根本原因是:“当你循环数组时。数组中的项目不是引用变量(你已经在另一个数组中排序)”。

您可以通过传递引用变量来尝试。

foreach ($array as &$item) {
    foreach($item as &$childs) {
        $row = array();
        $number = array();
        foreach($childs as $child) {
            $row[] = $child["row"];
            $number[] = $child["number"];
        }
        array_multisort($number, SORT_ASC, SORT_NUMERIC, $row, SORT_ASC, $childs);
    };
};

推荐阅读