刚才看了半天数组排序
分别有:递增排序——sort
递减排序——rsort
数组排序——array_multisort
前两个我相信我应该和大家一样一看就懂,事实也是如此.
可是第三个却看了好久也没有看懂,郁闷 -_-!!!
最后通过反复比较自己修改后的程序的运行结果,终于有些通路了..
请看介绍:
array_multisort
(PHP
4
,
PHP
5
)
array_multisort
--
对多个数组或多维数组进行排序
说明
bool
array_multisort
(
array
ar1 [
,
mixed
arg [
,
mixed
...
[
,
array
...
]]] )
如果成功则返回
TRUE
,失败则返回
FALSE
。
array_multisort
() 可以用来一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序。
关联(
string
)键名保持不变,但数字键名会被重新索引。
输入数组被当成一个表的列并以行来排序――这类似于 SQL 的 ORDER BY 子句的功能。第一个数组是要排序的主要数组。数组中的行(值)比较为相同的话就按照下一个输入数组中相应值的大小来排序,依此类推。
本函数的参数结构有些不同寻常,但是非常灵活。第一个参数必须是一个数组。接下来的每个参数可以是数组或者是下面列出的排序标志。
排序顺序标志:
SORT_ASC
-
按照上升顺序排序
SORT_DESC
-
按照下降顺序排序
排序类型标志:
SORT_REGULAR
-
将项目按照通常方法比较
SORT_NUMERIC
-
将项目按照数值比较
SORT_STRING
-
将项目按照字符串比较
每个数组之后不能指定两个同类的排序标志。每个数组后指定的排序标志仅对该数组有效
-
在此之前为默认值 SORT_ASC 和 SORT_REGULAR。
以上摘自PHP手册,嘿嘿....
下面请看例子:
<?
php
$ar1
=
array
(
5
=>
"
zero
"
,
1
=>
"
one
"
,
4
=>
"
two
"
);
$ar2
=
array
(
4
=>
"
three
"
,
9
=>
"
four
"
,
1
=>
"
five
"
);
array_multisort
(
$ar1
,
$ar2
);
foreach
(
$ar1
as
$key
=>
$value
){
var_dump
(
$value
);
}
echo
"
<hr/>
"
;
foreach
(
$ar2
as
$key
=>
$value
){
var_dump
(
$value
);
}
?>
这个的运行结果是:
string(3) "one" string(3) "two" string(4) "zero"
string(4) "four" string(4) "five" string(5) "three"
当然这个上面的排序我想大家应该能看懂.嘻嘻.就是按字符串升序排的,和单独运行sort的结果一样.
但是下面是怎么回事呢??
下面的也是按升序排的?
很显然不是,因为如果是升序应该是 five four three
那么是怎么回事呢?
现在把程序改一下,
<?
php
$ar1
=
array
(
5
=>
"
zero
"
,
1
=>
"
uone
"
,
4
=>
"
two
"
);
$ar2
=
array
(
4
=>
"
three
"
,
9
=>
"
four
"
,
1
=>
"
five
"
);
array_multisort
(
$ar1
,
$ar2
);
foreach
(
$ar1
as
$key
=>
$value
){
var_dump
(
$value
);
}
echo
"
<hr/>
"
;
foreach
(
$ar2
as
$key
=>
$value
){
var_dump
(
$value
);
}
?>
再来看它
string(3) "two" string(4) "uone" string(4) "zero"
string(4) "five" string(4) "four" string(5) "three"
第一行还是按升序排列,第二行也变成升序了?呵.怎么回事呢??
仔细读手册上的函数定义,再加上运行结果,不难看出这样一件事:
那就是,第二行的元素和第一行的是对应的.也就是说
three的位置对应zero的位置,four的位置对应那个uone的位置,five的位置对应two,
排列完之后仍然是这个对应关系.呵.就是这样喽~~
大家可以继续把上面的顺序换一下,看输出后是不是永远是one对应着four哦.呵..
Good Good Strudy , Day Day Up!!!
分享到:
相关推荐
array_change_key_case -- 返回...array_multisort -- 对多个数组或多维数组进行排序 array_pad -- 用值将数组填补到指定长度 array_pop -- 将数组最后一个单元弹出(出栈) array_product -- 计算数组中所有值的乘积
PHP数组函数array_multisort()用法实例分析_.docx
本文实例分析了PHP数组函数array_multisort()用法。分享给大家供大家参考,具体如下: 有时候我们需要对二维数组的某个键的值进行排序,这里就是讨论这个问题。我们可以使用array_multisort()这个函数。array_...
有两个数组:$arr1 = array(1,9,5);$arr2 = array(6,2,4);array_multisort($arr1,$arr2);print_r($arr1); // 得到的顺序是1,5,9print_r($arr2); // 得到的顺序是6,4,2我估计两个数组的值自始至终都是对应着的:1对应...
array_multisort — 对多个数组或多维数组进行排序 说明 bool array_multisort ( array ar1 [, mixed arg [, mixed … [, array …]]] ) array_multisort (PHP 4, PHP 5) 如果成功则返回 TRUE,失败则返回 FALSE。...
使用 array_multisort()函数对多个数组或多维数组进行排序的函数,正在研究数组排序、多维数组排序的朋友可以看看。 函数 bool array_multisort ( array &$arr [, mixed $arg = SORT_ASC [, mixed $arg = SORT_...
下面将一下array_multisort函数array_multisort() 可以用来一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序。 关联(string)键名保持不变,但数字键名会被重新索引。 排序顺序标志:SORT_ASC – ...
*************函数定义和语法************* array_multisort (PHP4 >= 4.0b4) array_multisort — 排序复合或多样尺寸的数组 语法 : bool array_multisort (array ar1 [,mixed arg [,mixed …[,array…]]]) 说明 : ...
其中键索引为要排序数组的索引,保证唯一性 2 利用排序函数sort等对$arrSort进行排序. 3 遍历$arrSort, 根据其索引,获取多维数组的数据,重新构造排序后的多维数组. 复制代码 代码如下:Array ( [0] => Array ( [link]...
php 中array_multisort() 函数可以用来一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序。本文章向大家讲解array_multisort函数的使用方法。 array_multisort() 函数返回排序数组。您可以输入一个...
PHP中array_multisort可以用来一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序。 关联(string)键名保持不变,但数字键名会被重新索引。 输入数组被当成一个表的列并以行来排序——这类似于 SQL ...
对于PHP语言中的多维数组排序时最为复杂的一个排序方式。我们在实际编码中将会用到PHP函数array_multisort()来实现这一复杂的排序。
本文实例讲述了php自定义二维数组排序函数array_orderby用法。分享给大家供大家参考,具体如下: <?php /** I came up with an easy way to sort database-style results. This does what example 3 does, ...
array_multisort 对多个数组或多维数组进行排序的函数,需要的朋友可以参考下。
关于排序一般我们都是通过数据库或者nosql(eg:redis)先排好序然后输出到程序里直接使用,但是有些时候我们需要通过PHP...一、用PHP自带array_multisort函数排序 复制代码 代码如下:<?php $data = array(); $da
array_values($arr) array 返回数组所有元素 复制代码 代码如下: <?php $arr = array(“a”, “b”, “c”); $arr = array_flip($arr); //反转数组的下标和值现在的$arr = array(0, 1, 2); $arr = array_values($...