2016-11-23 61 views
0

我一直都在使用array_multisort,但是這一次在排序時遇到了問題。array_multisort無法正常工作?

我用它來排序多維數組($數據),但我簡化本例中的問題:

$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 
    ) 

我缺少什麼?

+1

看來你輸入的參數icorrect http://www.w3schools.com/Php/func_array_multisort.asp 要排序$排序數組,而不是$數據 – VadimB

回答

0

笨箱,有在其擰向上分揀線之間的ksort($data)

1

試試這個

<?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 
) 
+0

我需要$排序是排序數組,因爲$數據實際上是一個多維數組。爲什麼它不能以其他方式工作? –

0

語法

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

$數據仍未正確排序。 –

+0

我已經更新了答案= _ =我忘記'sorting_type'爲'$ data' – Doanh

+0

opps,缺少'sorting_order'而不是'sorting_type',對不起 – Doanh