array_multisort 工作不正常?
array_multisort not working properly?
我一如既往地使用 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)
搞砸了排序。
我一如既往地使用 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)
搞砸了排序。