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('id'=>1,'name'=>'fj','weight'=>100,'height'=>180),
					array('id'=>2,'name'=>'tom','weight'=>53,'height'=>150),
					array('id'=>3,'name'=>'jerry','weight'=>120,'height'=>156),
					array('id'=>4,'name'=>'bill','weight'=>110,'height'=>190),
					array('id'=>5,'name'=>'linken','weight'=>80,'height'=>200),
					array('id'=>6,'name'=>'madana','weight'=>95,'height'=>110),
					array('id'=>7,'name'=>'jordan','weight'=>70,'height'=>170)
				);

	var_dump($person);

	$person = my_sort($person,'name',SORT_ASC,SORT_STRING);

	var_dump($person);

	$person = my_sort($person,'weight');

	var_dump($person);
?>

结果如下:

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

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

php 二维数组排序 array_multisort

时间: 2024-10-09 11:09:53

php 二维数组排序 array_multisort的相关文章

php基础篇-二维数组排序 array_multisort

原文:php基础篇-二维数组排序 array_multisort 对2维数组或者多维数组排序是常见的问题,在php中我们有个专门的多维数组排序函数,下面简单介绍下: array_multisort(array1,sorting order, sorting type,array2,array3..)是对多个数组或多维数组进行排序的函数. array1 必需.规定输入的数组. sorting order 可选.规定排列顺序.可能的值是 SORT_ASC 和 SORT_DESC. sorting t

php基础篇-二维数组排序姐妹篇

前面介绍了php多维数组排序的一个函数array_multisort() ,想了解的人可以点击 二维数组排序 array_multisort 下面介绍下不适用array_multisort()进行多维数组的排序. 这里介绍下2个php排序函数,一个是asort,一个是arsort. asort(array,sorttype) 函数对数组进行排序并保持索引关系.主要用于对那些单元顺序很重要的结合数组进行排序. 可选的第二个参数包含了附加的排序标识. SORT_REGULAR - 默认.以它们原来的

PHP 二维数组排序 可以按指定 键值排序

<?php header("Content-Type:utf-8"); $arr = array( 0 => array( 'name' => '国际原油价格', 'url_pinyin' => 'kucun', ), 1 => array( 'name' => '原油', 'url_pinyin' => 'jiage', ), 2 => array( 'name' => '原油价格', 'url_pinyin' => 'yu

PHP二维数组排序(list_order)

/** * 对二维数组进行排序 * 模拟 数据表记录按字段排序 * * <code> * @list_order($list, $get['orderKey'], $get['orderType']); * </code> * @param array $array 要排序的数组 * @param string $orderKey 排序关键字/字段 * @param string $orderType 排序方式,'asc':升序,'desc':降序 * @param string

php对二维数组排序

<?php$src=Array(Array('username' => '0yl','accuracy' => 0.00),Array('username' => '11yl','accuracy' => 1.00),Array('username' => '12yl','accuracy' => 0.50),Array('username' => '13yl','accuracy' => 1.50));foreach($src as $key=>

PHP二维数组排序(感谢滔哥)

滔哥原创 /*                     _ooOoo_                    o8888888o                    88" . "88                    (| -_- |)                    O\  =  /O                 ____/`---'\____               .'  \\|     |//  `.              /  \\|||  :  |

PHP排序算法:二维数组排序

二维数组排序,比如一个学生成绩数组: $arr[] = array('name'=>'a','score'=>9); $arr[] = array('name'=>'c','score'=>4); $arr[] = array('name'=>'d','score'=>1); $arr[] = array('name'=>'b','score'=>3); $arr[] = array('name'=>'f','score'=>2); $arr[]

PHP 二维数组排序保持键名不变

对二维数组指定的键名排序,首先大家想到的是array_multisort函数,关于array_multisort的用法我之前也写了一篇废话不多言,我们看个实例: <?php $data = array( 1001 => array( 'age' => 22, 'name' => '鸠摩智' ), 1007 => array( 'age' => 21, 'name' => '慕容复' ), 1004 => array( 'age' => 27, 'nam

写个函数用来对二维数组排序

29.写个函数用来对二维数组排序(新浪) Foreach有两种语法: 语法一:foreach($arr as $value){ Echo $value; } 语法一:foreach($arr as $key=>$value){ Echo $key . "=>" . $value; } 使用foreach遍历二维数组 与数组排序有关的函数: ?  sort():对数组元素的值升序排列,不保留索引关系 ?  rsort():对数组元素的值降序排列,不保留索引关系. ?  aso