您的位置:首页 > 编程语言 > PHP开发

PHP中对数组进行排序

2011-12-22 10:07 211 查看
.测试一
$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的用法远远不止这么简单,这儿有很多精典的例子,有需要的时候可以再仔细看看。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: