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的用法远远不止这么简单,这儿有很多精典的例子,有需要的时候可以再仔细看看。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章