关闭

php 数组排序

250人阅读 评论(0) 收藏 举报
分类:

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 数组还是很强大。感觉学习不少

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:52583次
    • 积分:1805
    • 等级:
    • 排名:千里之外
    • 原创:136篇
    • 转载:1篇
    • 译文:0篇
    • 评论:7条
    最新评论