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的用法远远不止这么简单,这儿有很多精典的例子,有需要的时候可以再仔细看看。
$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的用法远远不止这么简单,这儿有很多精典的例子,有需要的时候可以再仔细看看。
相关文章推荐
- PHP 使用用户自定义的比较函数对数组中的值进行排序
- php对多维数组进行排序
- PHP - Manual手册 - V. Array 数组函数 - array_multisort对多个数组或多维数组进行排序
- PHP根据数组某个值大小进行排序
- PHP排队时间数组进行排序
- PHP使用array_multisort对多个数组或多维数组进行排序
- php数组函数序列之asort() - 对数组的元素值进行升序排序,保持索引关系
- php 对2维数组 根据某个键值进行排序的几种方法!
- PHP将二位数组按照第二维的某个元素的值进行排序
- PHP 多维数组进行排序
- php-Arrays 函数-array_multisort-对多个数组或多维数组进行排序
- php数组函数序列之krsort()- 对数组的元素键名进行降序排序,保持索引关系
- php数组函数序列之krsort()- 对数组的元素键名进行降序排序,保持索引关系
- PHP下对数组进行排序的函数
- PHP实现根据数组某个键值大小进行排序的方法
- php数组函数序列之asort() - 对数组的元素值进行升序排序,保持索引关系
- PHP 多维数组按照指定的顺序进行排序
- PHP下对数组进行排序的函数
- php数组根据指定字段对数组进行排序函数
- PHP 两个多维数组根据某个键的值进行组合排序的几种思路(二)