я использую 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
)
Что мне не хватает?
Попробуй это
<?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
)
Синтаксис
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"}
Глупый я был ksort($data)
между строк, которые испортили сортировку.