PHP实现多维数组按某键名排序的方法
PHP开发过程中有时候需要对一个多维数组进行排序,按照某个键名的键值进行排序,这个时候可以参考下面方法:
这里用到array_multisort函数,array_multisort() 函数可以对多个数组或多维数组进行排序
以下案例可以供参考:
<?php $data=array( 0=>array('one'=>34,'two'=>'d'), 1=>array('one'=>45,'two'=>'e'), 2=>array('one'=>47,'two'=>'h'), 3=>array('one'=>12,'two'=>'c'), 4=>array('one'=>15,'two'=>'w'), 5=>array('one'=>85,'two'=>'r'), ); foreach($data as $val){ $key_arrays[]=$val['one']; } array_multisort($key_arrays,SORT_ASC,SORT_NUMERIC,$data); var_dump($data); ?>
SORT_DESC 降序排列 SORT_ASC 升序排列
排序类型标志:
SORT_REGULAR
- 将项目按照通常方法比较(不修改类型)SORT_NUMERIC
- 按照数字大小比较SORT_STRING
- 按照字符串比较SORT_LOCALE_STRING
- 根据当前的本地化设置,按照字符串比较。 它会使用 locale 信息,可以通过 setlocale() 修改此信息。SORT_NATURAL
- 以字符串的"自然排序",类似 natsort()SORT_FLAG_CASE
- 可以组合 (按位或 OR)SORT_STRING
或者SORT_NATURAL
大小写不敏感的方式排序字符串。
这里的输出结果:将会按one的键值进行升序排序,如下:
array
0 =>
array
'one' => int 12
'two' => string 'c' (length=1)
1 =>
array
'one' => int 15
'two' => string 'w' (length=1)
2 =>
array
'one' => int 34
'two' => string 'd' (length=1)
3 =>
array
'one' => int 45
'two' => string 'e' (length=1)
4 =>
array
'one' => int 47
'two' => string 'h' (length=1)
5 =>
array
'one' => int 85
'two' => string 'r' (length=1)
php 对多维数组排序
我们可以将这个方法封装成函数方便调用
function my_array_multisort($data,$sort_order_field,$sort_order=SORT_ASC,$sort_type=SORT_NUMERIC){ foreach($data as $val){ $key_arrays[]=$val[$sort_order_field]; } array_multisort($key_arrays,SORT_ASC,SORT_NUMERIC,$data); rturn $data; }
顶(0)
踩(0)
- 最新评论