Сортировка многомерного массива в PHP

194
23 января 2018, 12:46

Функция array_multisort возвращает false при попытке отсортировать многомерный массив и сортировки не происходит.
Как узнать, в чем проблема?

Вот код:

// $arResult["ITEMS"] - многомерный массив произвольного уровня вложенности
$sort_numcie = array();
foreach($arResult["ITEMS"] as $val) {
    $sort_numcie[] = $val['SORT'];
}
array_multisort($sort_numcie, SORT_ASC, $arResult["ITEMS"]); // false

Что именно не нравится этой функции?

Answer 1

В данном примере вы не вкладываете данные в массив $sort_numcie под нужными ключами. И вложенность тут непричем.

$sort_numcie = array();
foreach($arResult["ITEMS"] as $key => $val) {
    $sort_numcie[$key] = $val['SORT'];
}
array_multisort($sort_numcie, SORT_ASC, $arResult["ITEMS"]);

И array_multisort не будет сортировать вложенные массивы. Если вы хотите сортировать и вложенные массивы, то надо применять сортировку к каждому отдельно, как в примере в документации:

$ar = array(
       array("10", 11, 100, 100, "a"),
       array(   1,  2, "2",   3,   1)
      );
array_multisort($ar[0], SORT_ASC, SORT_STRING,
                $ar[1], SORT_NUMERIC, SORT_DESC);
Answer 2
$price = array();
foreach ($inventory as $key => $row)
{
    $price[$key] = $row['price'];
}
array_multisort($price, SORT_DESC, $inventory);
READ ALSO
C++ socket(…) Как получить свой айпи?

C++ socket(…) Как получить свой айпи?

У меня есть программа серверУ меня получается к нему подключаться по всем 3 ip:

361
Подставляемая функция

Подставляемая функция

В чём смысл подставляемой функции в С++? Я понимаю перед типом возвращаемого значения нужно писать inline? Но в чём все-таки разница между обычной...

256
Функция работает неправильно 2018

Функция работает неправильно 2018

Есть список и есть функция addДобавляем элементы, а с функцией doubling удваиваем

297