сортировка — Почему функция array_multisort не сортирует правильно?

пожалуйста, просмотрите следующий код с 2 массивами. Я использую функцию мультисортировки с флагами сортировки для возрастания и числового отображения. как вы можете видеть на выходе, массив 2 начинается с 100, когда он должен быть последним. пожалуйста, объясните, что является причиной этого и как правильно его отсортировать. благодарю вас.

<?php
$array1 = array(1,7,10,6);
$array2 = array(100,20,25,10);
array_multisort($array1, SORT_ASC, SORT_NUMERIC, $array2);
print_r($array1);
echo "<br>";
print_r($array2);
?>

output:
Array ( [0] => 1 [1] => 6 [2] => 7 [3] => 10 )
Array ( [0] => 100 [1] => 10 [2] => 20 [3] => 25 )

1

Решение

Ах, да, array_multisort немного сложнее понять с первого раза.

По сути, сортировка лексикографическая, причудливое слово, означающее, что первый массив отсортирован, а элементы второго массива упорядочены в соответствии с первым массивом.

Посмотрите на ваш первый (выходной) массив, посмотрите порядок и сопоставьте его с исходным вторым массивом, и вы увидите, что происходит.

Итак, во втором массиве вы берете 1-й, 4-й, 2-й и 3-й элементы.

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

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]