PHP中對數組進行排序

 .測試一
$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的用法遠遠不止這麼簡單,這兒有很多精典的例子,有需要的時候可以再仔細看看。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章