PHP中二维数组排序问题

PHP中二维数组排序,可以使用PHP内置函数uasort()

【使用用户自定义的比较函数对数组中的值进行排序并保持索引关联】

回调函数如下:注意回调函数的返回值是负数或者是false的时候,表示回调函数的第一个参数在前,第二个参数在后排列

	$person = array(
		array('num'=>'001','id'=>6,'name'=>'zhangsan','age'=>21),
		array('num'=>'001','id'=>7,'name'=>'ahangsan','age'=>23),
		array('num'=>'003','id'=>1,'name'=>'bhangsan','age'=>23),
		array('num'=>'001','id'=>3,'name'=>'dhangsan','age'=>23),
	);
	//负数或者false表示第一个参数应该在前
	function sort_by_name($x,$y){
		return strcasecmp($x['name'],$y['name']);
	}

使用如下:

uasort($person,'sort_by_name');

下面给出一个二维数组排序的方法,供参考和面试使用:

	//$array 要排序的数组
	//$row   排序依据列
	//$type  排序类型[asc or desc]
	//return 排好序的数组
	function array_sort($array,$row,$type){
		$array_temp = array();
		foreach($array as $v){
			$array_temp[$v[$row]] = $v;
		}
		if($type == 'asc'){
			ksort($array_temp);
		}elseif($type='desc'){
			krsort($array_temp);
		}else{

		}
		return $array_temp;
	}

=====================================================================

这里顺便说一下PHP排序的几个函数

【sort 对数组排序】一般适用于一维索引数组,不会保持索引

【rsort 对数组逆向排序】 和sort用法一致

【asort 对数组进行排序并保持索引关系】对值进行排序,一般适用于一维数组,保持索引关系

【arsort 对数组进行逆向排序并保持索引关系】和asort用法一致

【ksort 对数组按照键名排序】

【krsort 对数组按照键名逆向排序】

=====================================================================

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索数组
, 二维数组问题
, 函数
, 二维数组
, 排序
, 索引
, array
, 数组排序
, java 二维数组
, 数组问题
, php数组问题
, 二维码,参数
, Sort函数用法
二维
php 二维数组排序、php二维数组排序函数、php对二维数组排序、php二维数组重新排序、php 二维数组键值排序,以便于您获取更多的相关知识。

时间: 2024-10-11 17:42:02

PHP中二维数组排序问题的相关文章

php中二维数组排序问题方法详解_php实例

PHP中二维数组排序,可以使用PHP内置函数uasort() 示例一: 使用用户自定义的比较函数对数组中的值进行排序并保持索引关联 回调函数如下:注意回调函数的返回值是负数或者是false的时候,表示回调函数的第一个参数在前,第二个参数在后排列 $person = array( array('num'=>'001','id'=>6,'name'=>'zhangsan','age'=>21), array('num'=>'001','id'=>7,'name'=>'

数组中求乘积-JAVA中二维数组的函数运算

问题描述 JAVA中二维数组的函数运算 for(i=0;i<MAX;i++){ for(j=0;j<MAX;j++){ d[i][j]=0; for(k=0;k<MAX;k++) d[i][j]+=a[i][k]*b[k][j]; } } 就是在这个程序中为什么最后的乘积是 for(k=0;k<MAX;k++) d[i][j]+=a[i][k]*b[k][j];

关于JS中二维数组的声明方法_javascript技巧

如下所示: var myarr=new Array(); //先声明一维 for(var i=0;i<2;i++){ //一维长度为2 myarr[i]=new Array(); //再声明二维 for(var j=0;j<3;j++){ //二维长度为3 myarr[i][j]=i+j; // 赋值,每个数组元素的值为i+j } } 以上就是小编为大家带来的关于JS中二维数组的声明方法的全部内容了,希望对大家有所帮助,多多支持~ 以上是小编为您精心准备的的内容,在的博客.问答.公众号.人物.

java-Java中二维数组的遍历原理是什么

问题描述 Java中二维数组的遍历原理是什么 public class Demo{ public static void main(String[] args){ int a[][]={{1,2},{3,4},{5,6}}; for(int i=0;i<a.length;i++){ for(int j=0;j<a[i].length;j++){ System.out.print(" "+a[i][j]); } System.out.println(); } } } 解决方案

link中二维数组如何按照行来颠倒?

问题描述 link中二维数组如何按照行来颠倒? link中二维数组如何按照行来颠倒? 解决方案 先转换为交错数组,然后直接对第一维做Reverse

语言二维数组-C语言编程中二维数组以及递归函数问题

问题描述 C语言编程中二维数组以及递归函数问题 有编号分别为0,1,2,3,4的5本书,准备分给5个人A,B,C,D,E,每个人阅读兴趣用一个二维数组加以描述,公式如下: 1 i喜欢j书 Like[i][j] = 0 i不喜欢j书 写一个程序,输出所有分书方案,让人人皆大欢喜.假定5个人对5本书的阅读兴趣如下图所示. 解决方案 答案 a 2 b 0 c 1 d 3 e 4 要程序先采纳 解决方案二: 大半夜的,干嘛递归呢 5个for循环妥妥的 int num=0; struct answer {

c++ 二维数组-C++构造函数中二维数组如何初始化的问题

问题描述 C++构造函数中二维数组如何初始化的问题 cannot convert '< brace-enclosed initializer list >' to 'int' in assignment这个是怎么回事 解决方案 你要不把代码也写进来吧,这也我们也不好分析.

Java编程中二维数组的初始化和基本操作实例_java

Java二维数组的声明和初始化 1.二维数组可以看成以数组为元素的数组: 2.Java中二维数组的声明和初始化应按照从高维到低维的顺序进行. 实例: 静态初始化: Array2.java: 程序代码 public class Array2 { public static void main(String args[]) { int a[][] = {{1,2},{3,4,5,6},{7,8,9}} ; for(int i=0 ; i <a.length ; i++) { for(int j=0

java与c#中二维数组的区别

java中使用二维数组 public class Array2D...{ public static void main(String[] args)...{ int myInt[][]=new int[5][10]; //遍历,给数组中的每一个数组赋值 for(int i=0;i<myInt.length;i++)...{ for(int j=0;j<myInt[0].length;j++)...{ myInt[i][j]=i*j; } } System.out.println ("