PHP数组排序函数使用方法

php数组排序函数有

sort  (  &$arr   [,fruits] )  对数组进行从低到高排序 ,并赋予新的键名 返回bool
rsort  ( &$arr   [,fruits] ) 对数组进行逆向排序  并赋予新的键名
asort ( &$arr   [,fruits] ) 对数组进行排序 ,并保持索引不变
arsort( &$arr   [,fruits] ) 对数组进行逆向排序 并保持索引不变

ksort ( &$arr [,fruits] ) 对数组按照键名进行排序
krsort( &$arr [,fruits] ) 对组数按照键名进行逆向排序

natsort( &$arr )     对数组键值进行‘自然排序法’ 按照长度 字母排序等
natcasesort( &$arr ) 对数组进行不区分大小写的 ‘自然排名’

usort ( &$arr , cmp_function ) 用户自定义函数对一个数组进行排序 重新排列键名
uksort (&$arr , cmp_function ) 用户自定义函数对一个数组进行键名排序
uasort (&$arr , cmp_function) 用户自定义函数对数组进行排序 并保持索引不变

array_multisort( $arr , mixed)

第二个参数是 可以根据值改变排序行为

SORT_REGULAR 正常比较单元  SORT_NUMERIC 单元被作为数字来比较 
SORT_STRING 单元被作为字符串来比较 SROT_LOCALE_STRING 根据当前的local 设置来把单元当做字符串比较

--------------------sort函数升序排序--------------------------------
bool sort ( array &$array [, int $sort_flags= SORT_REGULAR ] )

 代码如下 复制代码

<?php
$fruits = array("lemon", "orange", "banana", "apple");
sort($fruits);
var_dump($fruits);
?>
结果:
array

0 =>

string

 'apple' (length=5)
  1 =>

string

 'banana' (length=6)
  2 =>

string

 'lemon' (length=5)
  3 =>

string

 'orange' (length=6)

--------------------rsort降序排列--------------------

 代码如下 复制代码

<?php
$fruits = array("lemon", "orange", "banana", "apple");
rsort($fruits);
var_dump($fruits);
?>
结果:
array
  0 =>

string

 'orange' (length=6)
  1 =>

string

 'lemon' (length=5)
  2 =>

string

 'banana' (length=6)
  3 =>

string

 'apple' (length=5)

---------------asort按照二维数组值的升序排列(保持key=>value的关联关系)-----------

 代码如下 复制代码

<?php
$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");
asort($fruits);
var_dump($fruits);
?>
结果:
array
  'c' =>

string

 'apple' (length=5)
  'b' =>

string

 'banana' (length=6)
  'd' =>

string

 'lemon' (length=5)
  'a' =>

string

 'orange' (length=6)

--------------arsort按照二维数组值的降序排列(保持key=>value的关联关系)--------------

 代码如下 复制代码

<?php
$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");
arsort($fruits);
var_dump($fruits);
?>
结果
array
  'a' =>

string

 'orange' (length=6)
  'd' =>

string

 'lemon' (length=5)
  'b' =>

string

 'banana' (length=6)
  'c' =>

string

 'apple' (length=5)

--------------------ksort按照数组的key升序排列--------------

 代码如下 复制代码

<?php

$fruits = array("d"=>"lemon", "a"=>"orange", "b"=>"banana", "c"=>"apple");
ksort($fruits);
var_dump($fruits);
?>
结果
array

'a' =>

string

 'orange' (length=6)
  'b' =>

string

 'banana' (length=6)
  'c' =>

string

 'apple' (length=5)
  'd' =>

string

 'lemon' (length=5)

---------------------krsort按照数组key的降序排列--------------------------------

 代码如下 复制代码

<?php
$fruits = array("d"=>"lemon", "a"=>"orange", "b"=>"banana", "c"=>"apple");
krsort($fruits);
var_dump($fruits);
?>

array
  'd' =>

string

 'lemon' (length=5)
  'c' =>

string

 'apple' (length=5)
  'b' =>

string

 'banana' (length=6)
  'a' =>

string

 'orange' (length=6)

 

----------------usort函数按照用户自定义的函数排序----------------

 代码如下 复制代码

<?php
function cmp($a, $b)
{
    if ($a == $b) {
        return 0;
    }
    return ($a < $b) ? -1 : 1;
}

$a = array(3, 2, 5, 6, 1);

usort($a, "cmp");

var_dump($a);
?>
结果:
array
  0 =>

int

 1
  1 =>

int

 2
  2 =>

int

 3
  3 =>

int

 5
  4 =>

int

 6

-----------------uksort使用自定义函数按照数组的key排序-----------------

 代码如下 复制代码

<?php
function cmp($a, $b)
{
    $a = preg_replace('@^(a|an|the) @', '', $a);
    $b = preg_replace('@^(a|an|the) @', '', $b);
    return strcasecmp($a, $b);
}

$a = array("John" => 1, "the Earth" => 2, "an apple" => 3, "a banana" => 4);

uksort($a, "cmp");

var_dump($a);
?>
结果:
array
  'an apple' =>

int

 3
  'a banana' =>

int

 4
  'the Earth' =>

int

 2
  'John' =>

int

 1

-------------------uasort将数组用自定义函数按照value排序,保持索引关系不变---------

 代码如下 复制代码

<?php
// Comparison function
function cmp($a, $b) {
    if ($a == $b) {
        return 0;
    }
    return ($a < $b) ? -1 : 1;
}

// Array to be sorted
$array = array('a' => 4, 'b' => 8, 'c' => -1, 'd' => -9, 'e' => 2, 'f' => 5, 'g' => 3, 'h' => -4);
var_dump($array);

// Sort and print the resulting array
uasort($array, 'cmp');
var_dump($array);
?>
结果:
array
  'a' =>

int

 4
  'b' =>

int

 8
  'c' =>

int

 -1
  'd' =>

int

 -9
  'e' =>

int

 2
  'f' =>

int

 5
  'g' =>

int

 3
  'h' =>

int

 -4
array
  'd' =>

int

 -9
  'h' =>

int

 -4
  'c' =>

int

 -1
  'e' =>

int

 2
  'g' =>

int

 3
  'a' =>

int

 4
  'f' =>

int

 5
  'b' =>

int

 8

-------------------array_multisort排序多个数组或多维数组---------

 代码如下 复制代码

<?php
$ar = array(
       array("10", 11, 100, 100, "a"),
       array(   1,  2, "2",   3,   1)
      );
  
array_multisort($ar[0], SORT_ASC, SORT_STRING,
                $ar[1], SORT_NUMERIC, SORT_DESC);
var_dump($ar);
?>
结果:
array
  0 =>
    array
      0 =>

string

 '10' (length=2)
      1 =>

int

 100
      2 =>

int

 100
      3 =>

int

 11
      4 =>

string

 'a' (length=1)
  1 =>
    array
      0 =>

int

 1
      1 =>

int

 3
      2 =>

string

 '2' (length=1)
      3 =>

int

 2
      4 =>

int

1

//说明:
1 上例中:$ar数组优先按照$ar[0]的字符串值升序排列,如果字符串值相等,再按照$ar[1]数组的数字值降序排列。
2 array_multisort函数的任意一个位置的参数如果是数组,表示排序时用的值,
如果有多个数组参数,优先按照前边的数组值进行排序,如果是常量,例如
SORT_ASC, SORT_DESC, SORT_REGULAR,SORT_NUMERIC, SORT_STRING.

PHP二维数组排序函数

PHP一维数组的排序可以用sort(),asort(),arsort()等函数,但是PHP二维数组的排序需要自定义。

以下函数是对一个给定的二维数组按照指定的键值进行排序,先看函数定义:

 代码如下 复制代码

function array_sort($arr,$keys,$type='asc'){
 $keysvalue = $new_array = array();
 foreach ($arr as $k=>$v){
  $keysvalue[$k] = $v[$keys];
 }
 if($type == 'asc'){
  asort($keysvalue);
 }else{
  arsort($keysvalue);
 }
 reset($keysvalue);
 foreach ($keysvalue as $k=>$v){
  $new_array[$k] = $arr[$k];
 }
 return $new_array;
}

时间: 2024-10-30 01:33:17

PHP数组排序函数使用方法的相关文章

PHP实现指定字段的多维数组排序函数分享

 这篇文章主要介绍了PHP实现指定字段的多维数组排序函数分享,本文分享了一段PHP指定字段的多维数组排序方法的代码,这段代码可实现根据field字段对数组进行排序,需要的朋友可以参考下     PHP数组排序可以用array_multisort方法实现,但是如果是多维数组,并且我们要指定数组中的某个字段进行排序,那么这就需要我们自己写方法实现了.本文分享了一段PHP指定字段的多维数组排序方法的代码,这段代码可实现根据field字段对数组进行排序. 代码如下: function sortArrBy

PHP数组排序函数合集 以及它们之间的联系分析

下边提到的几个数组函数的排序有一些共性:1 数组被作为排序函数的参数,排序以后,数组本身就发生了改变,函数的返回值为bool类型. 2 函数名中出现单a表示association,含义为,在按值排序的过程中,保持key=>value的对应关系不变 3 函数名中出现单k表示key,含义为,在按值排序的过程中按照数组key而不是数组的值排序 4 函数名中出现单r的表示reverse,含义为,按照跟不加r的相反的顺序排列 5 函数名中出现单u的表示user-defined,含义为,使用用户自定义函数排

Js数组排序函数sort()介绍

  本文给大家简单探讨下Js数组排序函数sort()的用法和示例,有需要的小伙伴可以参考下. JavaScript实现多维数组.对象数组排序,其实用的就是原生的sort()方法,用于对数组的元素进行排序. sort() 方法用于对数组的元素进行排序.语法如下: arrayObject.sort(sortby) 返回值为对数组的引用.请注意,数组在原数组上进行排序,不生成副本. 如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序.要实现这一

深入探讨JS的数组排序函数sort()(二)

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 这是上一篇关于JS数组函数sort的讲解.深入探讨JS中的数组排序函数sort()和reverse().在看此文章的时候,希望大家去看下第一篇文章.因为,此篇文章是基于上一篇文章的基础上的. 好了,不废话了.开始进入我们今天的正题. 我感觉,我们在进行WEB编程的过程操作最多的是字符串和数组这两种数组类型. 8630.html"&g

浅谈js控制li标签排序问题 js调用php函数的方法_javascript技巧

[Html代码] <span style="font-size:14px;"><ul class="list-group"> <? if ($categorys): ?> <? foreach ($categorys as $category):?> <li class="list-group-item" data-id="<? echo $category->id ?&

PHP实现的自定义数组排序函数与排序类示例_php技巧

本文实例讲述了PHP实现的自定义数组排序函数与排序类.分享给大家供大家参考,具体如下: /* * 二维数组自定义排序函数 * uasort($arr,function_name) * **/ $arr = array( array('a'=>1,'b'=>'c'), array('a'=>4,'b'=>'a'), array('a'=>5,'b'=>'g'), array('a'=>7,'b'=>'f'), array('a'=>6,'b'=>'

PHP数组排序函数合集 以及它们之间的联系分析_php技巧

下边提到的几个数组函数的排序有一些共性:1 数组被作为排序函数的参数,排序以后,数组本身就发生了改变,函数的返回值为bool类型.2 函数名中出现单a表示association,含义为,在按值排序的过程中,保持key=>value的对应关系不变3 函数名中出现单k表示key,含义为,在按值排序的过程中按照数组key而不是数组的值排序4 函数名中出现单r的表示reverse,含义为,按照跟不加r的相反的顺序排列5 函数名中出现单u的表示user-defined,含义为,使用用户自定义函数排序,如果

CSS细节:选择器、单位、函数(方法)

文章简介:这篇文章讲到的特性,最赞的一点是它们解决了现实的问题,从琐碎而繁复的选择器到建立响应式网站的新挑战.实际上,我期待每一个特性被使用到最普通的项目当中. 未来的CSS太让人兴奋了:一方面,是全新的页面布局方式:另一方面,是酷炫的滤镜.颜色等视觉效果.这些CSS,受开发者追捧,被杂志和博客文章铺天盖地地介绍. 如果说这些特性是CSS华丽的一面,那我们来看看它朴实的一面:很不起眼的东西,如选择器.单位.函数(方法).我经常说这是繁琐的东西,但我意思是它们能干漂亮的活,这就是我要分享的. 怎么

javascript 调用js:javascript中iframe里面的页面调用父窗口js函数的方法

实现iframe内部页面直接调用该iframe所属父窗口自定义函数的方法.比如有A窗口,A内有个IFRAME. B,B里面的装载的是C页面,这时C要直接调用A里面的一个自定义函数ExpandPage();那么只要在C页面中写如下JS函数就可以了:window.parent.ExpandPage();如果ExpandPage()有参数也可以直接传递合适的参数进去. 本文链接http://www.cxybl.com/html/wyzz/JavaScript_Ajax/20130131/36765.h