快捷搜索:   nginx

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)

您可能还会对下面的文章感兴趣:

最新评论