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) 搞砸了排序。