$array = array(
array('id' => 1, 'name' => 'a'),
array('id' => 5, 'name' => 'b'),
array('id' => 3, 'name' => 'c')
);
按列id的值進行排序
foreach ($array as $key => $row) {
$id[$key] = $row['id'];
}
// 把 $data 作爲最後一個參數,以通用鍵排序
print_r($array);
array_multisort($id, SORT_ASC, $array);
print_r($array);
與數據庫中一行一行記錄的原理是類似的,1,a、5,b、3,c分別是三行記錄中的內容,不管怎麼排序,他們一定還是在一起的。
輸出:
排序前:
Array
(
[0] => Array
(
[id] => 1
[name] => a
)
[1] => Array
(
[id] => 5
[name] => b
)
[2] => Array
(
[id] => 3
[name] => c
)
)
排序後:
Array
(
[0] => Array
(
[id] => 1
[name] => a
)
[1] => Array
(
[id] => 3
[name] => c
)
[2] => Array
(
[id] => 5
[name] => b
)
)
2.測試二
$ar = array(
array (100, "10", "a", 100),
array (5, 3, "2", 1)
);
print_r($ar);
array_multisort ($ar[0], SORT_ASC, SORT_STRING,
$ar[1], SORT_NUMERIC, SORT_DESC);
print_r($ar);
本例中經過排序後,第一個數組將包含 10,100,100,"a"(作爲字符串上升排序),第二個數組將包含 3,5,1,2(作爲數值下降排序)。
array_multisort的排序方式有點類似於sql的order by語句,當order by後面有2個或以上的排序條件時,先按第一個條件排序,再按第二個條件排序。
在此例中數組$ar排序的結果不是$ar = array(array (10, 100, 100, "a"), array (5, 3, 2, 1)),而是$ar = array(array (10, 100, 100, "a"), array (3, 5, 1, 2)),原理與sql的order語句是類似的。
100與5、10與3、a與2、100與1是對齊的,不管怎麼排序,他們最後還是對齊的。
輸出:
排序前:
Array
(
[0] => Array
(
[0] => 100
[1] => 10
[2] => a
[3] => 100
)
[1] => Array
(
[0] => 5
[1] => 3
[2] => 2
[3] => 1
)
)
排序後:
Array
(
[0] => Array
(
[0] => 10
[1] => 100
[2] => 100
[3] => a
)
[1] => Array
(
[0] => 3
[1] => 5
[2] => 1
[3] => 2
)
)
3.總結
函數array_multisort的用法遠遠不止這麼簡單,這兒有很多精典的例子,有需要的時候可以再仔細看看。