array_multisort не работает должным образом?

я использую array_multisort как всегда, но на этот раз у него есть проблемы с правильной сортировкой.

Я использую его для сортировки многомерного массива ($ data), но я упростил задачу в этом примере:

    $data = array(6 => 'WEEK 48', 7 => 'WEEK 49', 8 => 'WEEK 47', 9 => 'WEEK 50', 10 => 'WEEK 51');

$sort = array(8 => 201647, 6 => 201648, 7 => 201649, 9 => 201650, 10 => 201651);

array_multisort($sort, SORT_ASC, $data);

Output:
Array
(
[0] => WEEK 48
[1] => WEEK 49
[2] => WEEK 47
[3] => WEEK 50
[4] => WEEK 51
)

Что мне не хватает?

0

Решение

Попробуй это

    <?php

$data = array(6 => 'WEEK 48', 7 => 'WEEK 49', 8 => 'WEEK 47', 9 => 'WEEK 50', 10 => 'WEEK 51');

$sort = array(8 => 201647, 6 => 201648, 7 => 201649, 9 => 201650, 10 => 201651);

array_multisort($data, SORT_ASC, $sort);

echo '<pre>';
print_r($data);

?>

выход:

Array
(
[0] => WEEK 47
[1] => WEEK 48
[2] => WEEK 49
[3] => WEEK 50
[4] => WEEK 51
)
1

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

Синтаксис

array_multisort(array1,sorting order,sorting type,array2,array3...)

Вы должны предоставить sorting_type для вашего массива

array_multisort($sort, SORT_ASC, SORT_STRING, $data, SORT_ASC, SORT_NUMERIC);

var_dump($sort);
var_dump($data);

Результаты:

array(5) {
[0]=> int(201647)
[1]=> int(201648)
[2]=> int(201649)
[3]=> int(201650)
[4]=> int(201651)
}

array(5) {
[0]=> string(7) "WEEK 47"[1]=> string(7) "WEEK 48"[2]=> string(7) "WEEK 49"[3]=> string(7) "WEEK 50"[4]=> string(7) "WEEK 51"}
0

Глупый я был ksort($data) между строк, которые испортили сортировку.

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector