php二维数组根据某字段排序(对查询结果集进行排序)
我们经常会遇到根据二维数组的某个键值来排序,然后突然想到onethink项目中有个函数,于是抽离出来,作为参考。
2014-05-22 17::15 看了热心phper的评论补充如下内容: 推荐使用php原生的array_multisort()函数,执行速度会快些且降低自定义函数的依赖 官方文档讲解比较难理解,不懂的朋友可以使用 大白话讲解(百度知道):http://zhidao.baidu.com/link?url=Ljv-21fnK2CZkd03nPxb7uB7owjApdWilxZlmCcZKQqTB5AeI_BsdhyCEIaa5gWl3o9xJ2WtX8m65avJFmR9CK
- /**
- * 对查询结果集进行排序
- * http://www.onethink.cn
- * /Application/Common/Common/function.php
- *
- * @access public
- * @param array $list 查询结果
- * @param string $field 排序的字段名
- * @param string $sortby 排序类型 (asc正向排序 desc逆向排序 nat自然排序)
- * @return array
- */
- if (! function_exists('list_sort_by'))
- {
- function list_sort_by($list, $field, $sortby = 'asc')
- {
- if (is_array($list))
- {
- $refer = $resultSet = array();
- foreach ($list as $i => $data)
- {
- $refer[$i] = &$data[$field];
- }
- switch ($sortby)
- {
- case 'asc': // 正向排序
- asort($refer);
- break;
- case 'desc': // 逆向排序
- arsort($refer);
- break;
- case 'nat': // 自然排序
- natcasesort($refer);
- break;
- }
- foreach ($refer as $key => $val)
- {
- $resultSet[] = &$list[$key];
- }
- return $resultSet;
- }
- return false;
- }
- }
复制代码
- /**
- * 例子
- * 求:根据二维数组的id键值降序排列(也就是id越大的排在越前)?
- */
- $list = array(
- 0 => array(
- 'id' => 1,
- 'name' => '第一'
- ),
- 1 => array(
- 'id' => 3,
- 'name' => '第三'
- ),
- 2 => array(
- 'id' => 2,
- 'name' => '第二'
- ),
- 3 => array(
- 'id' => 4,
- 'name' => '第四'
- ),
- );
- //解答
- $new_list = list_sort_by($list, 'id', 'desc');
复制代码
|
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
-
2024-10-22 09:46:29
-
2024-10-13 13:53:41
-
2024-10-12 12:15:51
-
2024-10-11 22:47:31
-
2024-10-11 19:36:51
-
2024-10-11 15:50:41
-
2024-10-11 15:07:41
-
2024-10-11 14:21:21
-
2024-10-11 12:59:11
-
2024-10-11 12:17:31