php 数组排序

原创 2015年11月18日 23:07:58

php 对于一维数组的排序有 俩种情况,一种是按值排序,一种是按键值, 其中不同的排序函数有不同的用法,有的会失去索引关系,有的会保持索引关系。但是都比较方便。

对于多维数组来说,就需要自己定义排序函数。其实就感觉像c,c++ 那样。对结构体之类的进行排序。

对于数组排序来说,分俩种情况,一种是对数字排序,一种是对字符串进行排序。

对数字进行排序


<?php
	function numSort($x,$y){
		return $x['a'] < $y['a'];
	}
	$array = array(
		'a'=>array('a'=>1,'b'=>'a'),
		'b'=>array('a'=>2,'b'=>'b'),
		'c'=>array('a'=>3,'b'=>'c'),
		'd'=>array('a'=>4,'b'=>'d')
	);
	var_dump($array);
	echo "<hr>";
	usort($array,'numSort');
	var_dump($array);
?>


array
  'a' => 
    array
      'a' => int 1
      'b' => string 'a' (length=1)
  'b' => 
    array
      'a' => int 2
      'b' => string 'b' (length=1)
  'c' => 
    array
      'a' => int 3
      'b' => string 'c' (length=1)
  'd' => 
    array
      'a' => int 4
      'b' => string 'd' (length=1)

array
  0 => 
    array
      'a' => int 4
      'b' => string 'd' (length=1)
  1 => 
    array
      'a' => int 3
      'b' => string 'c' (length=1)
  2 => 
    array
      'a' => int 2
      'b' => string 'b' (length=1)
  3 => 
    array
      'a' => int 1
      'b' => string 'a' (length=1)


发现索引关系没了。如果要保持索引关系,那么使用uasort就可以了。


对于字符串的排序,就需要考虑的字典序。

<pre name="code" class="php"><?php
	function keySort($x,$y){
		return strcasecmp($y['b'], $x['b']);//不区分大小写
	}
	$array = array(
		'a'=>array('a'=>1,'b'=>'a'),
		'b'=>array('a'=>2,'b'=>'b'),
		'c'=>array('a'=>3,'b'=>'c'),
		'd'=>array('a'=>4,'b'=>'d')
	);
	var_dump($array);
	echo "<hr>";
	usort($array,'keySort');
	var_dump($array);
?>



  'a' => 
    array
      'a' => int 1
      'b' => string 'a' (length=1)
  'b' => 
    array
      'a' => int 2
      'b' => string 'b' (length=1)
  'c' => 
    array
      'a' => int 3
      'b' => string 'c' (length=1)
  'd' => 
    array
      'a' => int 4
      'b' => string 'd' (length=1)

array
  0 => 
    array
      'a' => int 4
      'b' => string 'd' (length=1)
  1 => 
    array
      'a' => int 3
      'b' => string 'c' (length=1)
  2 => 
    array
      'a' => int 2
      'b' => string 'b' (length=1)
  3 => 
    array
      'a' => int 1
      'b' => string 'a' (length=1)



对键值排序

<pre name="code" class="php"><?php
	function keySort($x,$y){
		return strcasecmp($y, $x);//不区分大小写
	}
	$array = array(
		'a'=>array('a'=>4,'b'=>'d'),
		'b'=>array('a'=>3,'b'=>'c'),
		'c'=>array('a'=>2,'b'=>'b'),
		'd'=>array('a'=>1,'b'=>'a')
	);
	var_dump($array);
	echo "<hr>";
	uksort($array,'keySort');
	var_dump($array);
?>



array
  'a' => 
    array
      'a' => int 4
      'b' => string 'd' (length=1)
  'b' => 
    array
      'a' => int 3
      'b' => string 'c' (length=1)
  'c' => 
    array
      'a' => int 2
      'b' => string 'b' (length=1)
  'd' => 
    array
      'a' => int 1
      'b' => string 'a' (length=1)

array
  'd' => 
    array
      'a' => int 1
      'b' => string 'a' (length=1)
  'c' => 
    array
      'a' => int 2
      'b' => string 'b' (length=1)
  'b' => 
    array
      'a' => int 3
      'b' => string 'c' (length=1)
  'a' => 
    array
      'a' => int 4
      'b' => string 'd' (length=1)

php 数组还是很强大。感觉学习不少

相关文章推荐

php各种数组的排序算法

  • 2010年08月08日 23:24
  • 2KB
  • 下载

PHP二维数组的简易排序

有时候我们需要对二维数组的某个键的值进行排序,这里就是讨论这个问题。我们可以使用array_multisort()这个函数。array_multisort() 函数对多个数组或多维数组进行排序。 参...

php 多维数组排序

  • 2012年04月22日 12:37
  • 1KB
  • 下载

php 对二维数组的某个键的值进行排序

有时候我们需要对二维数组的某个键的值进行排序,这里就是讨论这个问题。我们可以使用array_multisort()这个函数。array_multisort() 函数对多个数组或多维数组进行排序。 ...

PHP:多维数组排序

在PHP中,利用sort()、ksort()对多个数组进行排序很简单,使用它们,可以对一维数组进行关键字排序、按值排序、逆排序等。但是这些函数不能方便地用于多维数组。假设有一个数组定义如下: $stu...

php中数组各种排序方法集合

下边提到的几个数组函数的排序有一些共性: 1 数组被作为排序函数的参数,排序以后,数组本身就发生了改变,函数的返回值为bool类型。 2 函数名中出现单a表示association,含义为,在...
  • dahuzix
  • dahuzix
  • 2013年05月16日 21:10
  • 618

PHP数组排序详解

PHP提供了很多种不同方式对数组进行排序的函数,这些函数允许用户在数组内部对元素进行排列。通过排序可以对数据进行合理的管理,提高程序的执行效率。 数字数组排序 1.应用sort()函数对数...

PHP数组排序函数合集 以及之间的联系

下边提到的几个数组函数的排序有一些共性: 1 数组被作为排序函数的参数,排序以后,数组本身就发生了改变,函数的返回值为bool类型。 2 函数名中出现单a表示association,含义为,在...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:php 数组排序
举报原因:
原因补充:

(最多只允许输入30个字)