首页  >  文章  >  后端开发  >  PHP二维数组排序 array_multisort

PHP二维数组排序 array_multisort

不言
不言原创
2018-05-15 10:36:143116浏览

这篇文章主要介绍的内容是关于PHP二维数组排序 array_multisort,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

对2维数组或者多维数组排序是常见的问题,在PHP中我们有个专门的多维数组排序函数,下面简单介绍下:

array_multisort(array1,sorting order, sorting type,array2,array3..) 是对多个数组或多维数组进行排序的函数。
array1 必需。规定输入的数组。
sorting order 可选。规定排列顺序。可能的值是 SORT_ASC 和 SORT_DESC。
sorting type 可选。规定排序类型。可能的值是SORT_REGULAR、SORT_NUMERIC和SORT_STRING。
array2 可选。规定输入的数组。
array3 可选。规定输入的数组。

参数中的数组被当成一个表的列并以行来进行排序 - 这类似 SQL 的 ORDER BY 子句的功能。第一个数组是要排序的主要数组。数组中的行(值)比较为相同的话,就会按照下一个输入数组中相应值的大小进行排序,依此类推。
第一个参数是数组,随后的每一个参数可能是数组,也可能是下面的排序顺序标志(排序标志用于更改默认的排列顺序)之一:
SORT_ASC - 默认,按升序排列。(A-Z)
SORT_DESC - 按降序排列。(Z-A)
随后可以指定排序的类型:
SORT_REGULAR - 默认。将每一项按常规顺序排列。
SORT_NUMERIC - 将每一项按数字顺序排列。

SORT_STRING - 将每一项按字母顺序排列

<?php 
   
    function my_sort($arrays,$sort_key,$sort_order=SORT_ASC,$sort_type=SORT_NUMERIC ){  
        if(is_array($arrays)){  
            foreach ($arrays as $array){  
                if(is_array($array)){  
                    $key_arrays[] = $array[$sort_key];  
                }else{  
                    return false;  
                }  
            }  
        }else{  
            return false;  
        } 
        array_multisort($key_arrays,$sort_order,$sort_type,$arrays);  
        return $arrays;  
    } 
   
    $person =  array( 
                    array(&#39;id&#39;=>1,&#39;name&#39;=>&#39;fj&#39;,&#39;weight&#39;=>100,&#39;height&#39;=>180), 
                    array(&#39;id&#39;=>2,&#39;name&#39;=>&#39;tom&#39;,&#39;weight&#39;=>53,&#39;height&#39;=>150), 
                    array(&#39;id&#39;=>3,&#39;name&#39;=>&#39;jerry&#39;,&#39;weight&#39;=>120,&#39;height&#39;=>156), 
                    array(&#39;id&#39;=>4,&#39;name&#39;=>&#39;bill&#39;,&#39;weight&#39;=>110,&#39;height&#39;=>190), 
                    array(&#39;id&#39;=>5,&#39;name&#39;=>&#39;linken&#39;,&#39;weight&#39;=>80,&#39;height&#39;=>200), 
                    array(&#39;id&#39;=>6,&#39;name&#39;=>&#39;madana&#39;,&#39;weight&#39;=>95,&#39;height&#39;=>110), 
                    array(&#39;id&#39;=>7,&#39;name&#39;=>&#39;jordan&#39;,&#39;weight&#39;=>70,&#39;height&#39;=>170) 
                ); 
       
    var_dump($person); 
       
    $person = my_sort($person,&#39;name&#39;,SORT_ASC,SORT_STRING); 
   
    var_dump($person); 
       
    $person = my_sort($person,&#39;weight&#39;); 
   
    var_dump($person); 
?>

结果如下:

array (size=7)
  0 =>
    array (size=4)
      &#39;id&#39; => int 1
      &#39;name&#39; => string &#39;fj&#39; (length=2)
      &#39;weight&#39; => int 100
      &#39;height&#39; => int 180
  1 =>
    array (size=4)
      &#39;id&#39; => int 2
      &#39;name&#39; => string &#39;tom&#39; (length=3)
      &#39;weight&#39; => int 53
      &#39;height&#39; => int 150
  2 =>
    array (size=4)
      &#39;id&#39; => int 3
      &#39;name&#39; => string &#39;jerry&#39; (length=5)
      &#39;weight&#39; => int 120
      &#39;height&#39; => int 156
  3 =>
    array (size=4)
      &#39;id&#39; => int 4
      &#39;name&#39; => string &#39;bill&#39; (length=4)
      &#39;weight&#39; => int 110
      &#39;height&#39; => int 190
  4 =>
    array (size=4)
      &#39;id&#39; => int 5
      &#39;name&#39; => string &#39;linken&#39; (length=6)
      &#39;weight&#39; => int 80
      &#39;height&#39; => int 200
  5 =>
    array (size=4)
      &#39;id&#39; => int 6
      &#39;name&#39; => string &#39;madana&#39; (length=6)
      &#39;weight&#39; => int 95
      &#39;height&#39; => int 110
  6 =>
    array (size=4)
      &#39;id&#39; => int 7
      &#39;name&#39; => string &#39;jordan&#39; (length=6)
      &#39;weight&#39; => int 70
      &#39;height&#39; => int 170
array (size=7)
  0 =>
    array (size=4)
      &#39;id&#39; => int 4
      &#39;name&#39; => string &#39;bill&#39; (length=4)
      &#39;weight&#39; => int 110
      &#39;height&#39; => int 190
  1 =>
    array (size=4)
      &#39;id&#39; => int 1
      &#39;name&#39; => string &#39;fj&#39; (length=2)
      &#39;weight&#39; => int 100
      &#39;height&#39; => int 180
  2 =>
    array (size=4)
      &#39;id&#39; => int 3
      &#39;name&#39; => string &#39;jerry&#39; (length=5)
      &#39;weight&#39; => int 120
      &#39;height&#39; => int 156
  3 =>
    array (size=4)
      &#39;id&#39; => int 7
      &#39;name&#39; => string &#39;jordan&#39; (length=6)
      &#39;weight&#39; => int 70
      &#39;height&#39; => int 170
  4 =>
    array (size=4)
      &#39;id&#39; => int 5
      &#39;name&#39; => string &#39;linken&#39; (length=6)
      &#39;weight&#39; => int 80
      &#39;height&#39; => int 200
  5 =>
    array (size=4)
      &#39;id&#39; => int 6
      &#39;name&#39; => string &#39;madana&#39; (length=6)
      &#39;weight&#39; => int 95
      &#39;height&#39; => int 110
  6 =>
    array (size=4)
      &#39;id&#39; => int 2
      &#39;name&#39; => string &#39;tom&#39; (length=3)
      &#39;weight&#39; => int 53
      &#39;height&#39; => int 150
array (size=7)
  0 =>
    array (size=4)
      &#39;id&#39; => int 2
      &#39;name&#39; => string &#39;tom&#39; (length=3)
      &#39;weight&#39; => int 53
      &#39;height&#39; => int 150
  1 =>
    array (size=4)
      &#39;id&#39; => int 7
      &#39;name&#39; => string &#39;jordan&#39; (length=6)
      &#39;weight&#39; => int 70
      &#39;height&#39; => int 170
  2 =>
    array (size=4)
      &#39;id&#39; => int 5
      &#39;name&#39; => string &#39;linken&#39; (length=6)
      &#39;weight&#39; => int 80
      &#39;height&#39; => int 200
  3 =>
    array (size=4)
      &#39;id&#39; => int 6
      &#39;name&#39; => string &#39;madana&#39; (length=6)
      &#39;weight&#39; => int 95
      &#39;height&#39; => int 110
  4 =>
    array (size=4)
      &#39;id&#39; => int 1
      &#39;name&#39; => string &#39;fj&#39; (length=2)
      &#39;weight&#39; => int 100
      &#39;height&#39; => int 180
  5 =>
    array (size=4)
      &#39;id&#39; => int 4
      &#39;name&#39; => string &#39;bill&#39; (length=4)
      &#39;weight&#39; => int 110
      &#39;height&#39; => int 190
  6 =>
    array (size=4)
      &#39;id&#39; => int 3
      &#39;name&#39; => string &#39;jerry&#39; (length=5)
      &#39;weight&#39; => int 120
      &#39;height&#39; => int 156

这里的重点就是,先把要排序的key存到一个一维数组中,然后就可以使用array_multisort()这个函数,将数组按照key进行排序了,当然,这里的排序你完全可以不适用array_multisort()这个函数,仅仅通过foreach遍历也能达到这个效果,但是既然php开发者给我们提供了更好的办法,我们就可以省去不必要的麻烦了。

转自:https://www.cnblogs.com/tdalcn/p/6420055.html

相关推荐:

PHP二维数组切割为字符串并去除重复的值

php二维数组中如何对其中一维数组中的某个字段进行排序

以上是PHP二维数组排序 array_multisort的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn