php сортировка многоступенчатого массива - PullRequest
0 голосов
/ 25 февраля 2020

У меня проблемы с сортировкой массива с вложенным массивом et c. Массив выглядит следующим образом:

$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"
                ),
            )
        ),
    );

Я хочу отсортировать этот массив (указать детей c) по 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);
    };
};

Но, похоже, не работает. Я не получил ошибку, но массив не отсортирован. Кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 02 марта 2020

Я думаю, root причина: "когда вы l oop массив. Элемент в массиве не является ссылочной переменной (вы отсортировали в другом массиве)".

Вы можете попробовать, передавая ссылочную переменную .

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);
    };
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...