2016-12-18 189 views
3

我有一個多維數組,我必須將這個數組轉換成單個數組。我試圖用call_user_func_array('array_merge', $ranges);這個函數。使用這個函數後得到單個數組。當我在單個陣列上使用sort()函數時,則顯示輸出1PHP多維數組到單個數組按值排序

我的陣列

Array 
(
    [range1] => Array 
     (
      [0] => 1113 
      [1] => 2224 
     ) 

    [range2] => Array 
     (
      [0] => 500 
      [1] => 1112 
     ) 

    [range3] => Array 
     (
      [0] => 2225 
      [1] => 4446 
     ) 
) 

使用call_user_func_array('array_merge', $ranges); 輸出

Array 
(
    [0] => 1113 
    [1] => 2224 
    [2] => 500 
    [3] => 1112 
    [4] => 2225 
    [5] => 4446 
) 

現在我使用sort()功能則顯示1。爲什麼會發生?引用並返回truefalse所以沒有必要ASIGN導致可變

回答

2

你幾乎沒有改變。在sort()函數中,數組通過引用傳遞,成功時返回true,失敗時返回false。所以,你應該申請扁平陣列這樣的sort()功能:

$array = call_user_func_array('array_merge', $ranges); 
sort($array); 

// display sorted array 
var_dump($array); 

這裏的參考:

1

sort()功能的工作,因爲源變量通過引用

+0

所以我怎麼能排序從最低值到最高值 –

+0

@dhanashri排序數組是與提供給排序函數的變量相同的變量。 – rafwlaz

+0

我在第二個數組上使用'sort()'函數不起作用 –