array_multisort 对关联数组进行排序的问题 PHP
2016-06-02 12:27
751 查看
我们在php的数组操作中经常用到对数组进行排序的问题,这里说的是对关联数组进行排序 需要用到函数 array_multisort 。
array_multisort(array_column($arr, 'weight'),SORT_NUMERIC, SORT_ASC, $arr); // 对关联数组 $arr 将键列'weight'转换为数字进行升序排序
SORT_NUMERIC // 转换为数字排序
SORT_STRING // 转换为文本排序
SORT_ASC // 升序
SORT_DESC // 降序
示例: 原关联数组:
$data[] = array('volume' => 'id100343', 'weight' => '4'); $data[] = array('volume' => 'id100212', 'weight' => '1'); $data[] = array('volume' => 'id104104', 'weight' => '10');
var_dump($data); 按照weight进行排序(数字方式SORT_NUMERIC):
array_multisort(array_column($data, 'weight'),SORT_NUMERIC, SORT_ASC, $data); 输出结果:
array(3) { [0]=> array(2) { ["volume"]=> string(8) "id100212" ["weight"]=> string(1) "1" } [1]=> array(2) { ["volume"]=> string(8) "id100343" ["weight"]=> string(1) "4" } [2]=> array(2) { ["volume"]=> string(8) "id104104" ["weight"]=> string(2) "10" } }
按照weight进行排序(文本方式SORT_STRING):
array_multisort(array_column($data, 'weight'),SORT_STRING, SORT_ASC, $data);
array(3) { [0]=> array(2) { ["volume"]=> string(8) "id100212" ["weight"]=> string(1) "1" } [1]=> array(2) { ["volume"]=> string(8) "id104104" ["weight"]=> string(2) "10" } [2]=> array(2) { ["volume"]=> string(8) "id100343" ["weight"]=> string(1) "4" } }
需要注意10作为数字和文本的区别。
相关文章推荐
- zend studio 13创建zend framework工程并用xdebug 调试zend framework
- [置顶] php的简单单例模式和工厂模式
- yii2分页之实现跳转到具体某页的实例代码
- 解决三大常见问题:五十个小技巧提高PHP执行效率
- zabbix 监控php-fpm
- PHP预定义超全局数组 $_ENV 、$GLOBALS 讲解
- PHP——生成随机数和日期时间
- PHP数组
- php实现子字符串位置相互对调互换的方法[原创]_php技巧_脚本之家
- 收藏一个Yaf教程
- php rand()和mt_ran(),还有随机数生成器
- php.ini修改php上传文件大小限制的方法详解
- phpstorm10.0.2三月22号补丁原来的网址被封了
- thinkphp如何去掉index.php
- 关闭浏览器报 getOutputStream() has already been called for this response
- 最好的vsftpd配置教程
- PHP function_exists的一个坑
- 史上最详细的vsftpd配置文件讲解
- 每天laravel-20160820| ContextualBinding
- 每天laravel-20160820| ContextualBinding