PHP 数组10
PHP 数组 Array
数组的概念
数组(array)是 PHP 中一个非常重要的概念,我们可以把数组看做一系列类似的数据的集合,实际上数组是一个有序图。
PHP 还提供了超过 70 个内建函数来操作数组。
创建数组
使用 array() 语言结构创建数组:
<?php
$arr_age1 = array(18, 20, 25);
// 或者:
$arr_age2 = array("wang"=>18, "li"=>20, "zhang"=>25);
// 空数组:
$arr_age3 =array();
?>
也可以使用数组控制器 [] 来创建数组:
<?php
$arr_age1[] = 18;
$arr_age1[] = 20;
$arr_age1[] = 25;
// 或者:
$arr_age2["wang"] = 18;
$arr_age2["li"] = 20;
$arr_age2["zhang"] = 25;
?>
数组键名与值
数组实体都包含两项:键名和值。
在下面创建数组的例子中:
$arr_age1 = array(18, 20, 25);
我们给 $arr_age1 分配了 3 个数组单元(也称元素),其值分别是 18、20 和 25。系统会自动给这 3 个数组单元分配 3 个数字序号,分别为 0、1 和 2。即 $arr_age1 数组的完整结构为:
Array ( [0] => 18 [1] => 20 [2] => 25 )
这个系统自动分配的序号称为键名,这种键名为数字 ID 的数组称为 索引数组( indexed array )。
当然也可以手动指定键名:
$arr_age1 = array( 0 => 18, 1 => 20, 2 => 25 );
提示
手动指定键名可以不从 0 开始,也可以不用按数字顺序来指定键名。
当一个新单元加入数组而没有指定健名时,系统将自动的在现有数组中最大的数字键中加 1 ,作为新单元的键名。
当使用字符串而非数字索引作为键名时,这种数组称为 关联数组( associative array ):
$arr_age2 = array("wang"=>18, "li"=>20, "zhang"=>25);
但在 PHP 中,这两种数组没有明显的界限,二者可以混合使用。注意关联数组中对于键名大小写是敏感的。
输出数组单元值
可以使用如下方式访问输出数组单元值:
echo $arr_age1[0]; //输出:18
echo $arr_age2["wang"]; //输出:18
某些情况下为了调试,可能需要输出整个数组的数据及结构,这时候需要使用 print_r() 或 var_dump() 函数,具体参见《PHP 打印输出数组内容及结构 print_r 与 var_dump 函数》
操作数组单元
可以象操作普通变量一样操作数组单元,如:
<?php
$arr_age2 = array("wang"=>18, "li"=>20, "zhang"=>25);
$arr_age2["wang"] = $arr_age2["wang"] + 10;
?>
现在 $arr_age2 为:
Array ( [wang] => 28 [li] => 20 [zhang] => 25 )
检查一个数组单元是被设定,请使用 isset() 。
销毁数组
使用 unset() 函数来销毁一个数组单元或整个数组:
<?php
unset($arr_age1[0]);
unset($arr_age1);
?>
多维数组
如果数组中的值也是数组时,我们就称这样的数组为递归数组或多维数组。
例子:
<?php
$all = array( "fruits" => array( "a"=>"orange", "b"=>"banana", "c"=>"apple"),
"ages" => array( 18, 20, 25 )
);
echo $all["fruits"]["c"]; //输出apple
echo $all["ages"][0]; //输出18
?>
PHP 打印输出数组内容及结构 print_r 与 var_dump 函数
print_r() 和 var_dump() 函数可以打印输出整个数组内容及结构。
print_r()
利用 print_r() 函数可以打印输出整个数组内容及结构,按照一定格式显示键和元素。注意 print_r() 函数不仅是只用于打印,实际它是用于打印关于变量的易于理解的信息。
语法:
bool print_r( mixed expression )
例子:
<?php
$arr_age = array(18, 20, 25);
print_r($arr_age);
?>
运行该例子输出:
Array ( [0] => 18 [1] => 20 [2] => 25 )
提示
查看输出结果的网页源代码,可以看到更易读的格式:
Array
(
[0] => 18
[1] => 20
[2] => 25
)
var_dump()
同 print_r() 函数一样,var_dump() 函数也可以用于打印数组的数据及结构。不过 var_dump() 函数功能比 print_r() 更强大,可以同时打印多个变量且给出变量的类型信息。
例子:
<?php
$arr_age = array(18, 20, 25);
var_dump($arr_age);
?>
运行该例子输出:
array(3) {
[0]=>
int(18)
[1]=>
int(20)
[2]=>
int(25)
}
print_r() 和 var_dump() 函数一般是用于调试程序使用,更多情况是使用 echo 来输出具体的数组单元值。
PHP is_array() 检测变量是否是数组
is_array() 函数用于检测变量是否是数组。
is_array()
PHP is_array() 函数用于检测变量是否是数组,这个函数尤其会用于一些安全性检查方面(如表单或 SESSION 检查等)。
语法:
bool is_array ( mixed var )
如果 var 是 array,则返回 TRUE,否则返回 FALSE 。
例子:
<?php
$arr_age = array(18, 20, 25);
if(is_array($arr_age)){
echo '变量 $arr_age 是一个数组';
} else {
echo '变量 $arr_age 不是一个数组';
}
?>
运行该例子输出:
变量 $arr_age 是一个数组
参考阅读
isset():检测变量是否设置
defined():检测常量是否被定义
PHP 数组遍历 foreach 语法结构
foreach 语法结构用于遍历数组。
foreach()
PHP foreach() 语法结构用于遍历操作或输出数组,foreach() 仅能用于遍历数组或对象,当试图将其用于其它数据类型或者一个未初始化的变量时会产生错误。
语法:
foreach (array as $value)
statement
// 或者:
foreach (array as $key => $value)
statement
上述语法中,每次循环将当前单元的值赋给 $value 并且数组内部的指针向前移一步。在第二种语法格式中还将当前单元的键名也会在每次循环中赋给变量 $key。
例子:
<?php
$arr_age = array("wang"=>18, "li"=>20, "zhang"=>25);
foreach ($arr_age as $age) {
echo $age,'<br />';
}
?>
运行该例子输出:
18
20
25
使用数组键值
<?php
$arr_age = array("wang"=>18, "li"=>20, "zhang"=>25);
foreach ($arr_age as $key=>$age) {
echo $key,': ',$age,'<br />';
}
?>
运行例子输出:
wang: 18
li: 20
zhang: 25
提示
当 foreach 开始执行时,数组内部的指针会自动指向第一个单元,这意味着不需要在 foreach 循环之前调用 reset()。
foreach 所操作的是指定数组的一个拷贝,而不是该数组本身。对返回的数组单元的修改也不会影响原数组(见下面例子),但 foreach 循环运行到结束,原数组的内部指针将指向数组的结尾。
<?php
$arr_age = array("wang"=>18, "li"=>20, "zhang"=>25);
foreach ($arr_age as $age) {
$age = $age+10;
echo $age,'<br />';
}
// 输出原数组
print_r($arr_age);
?>
运行例子输出:
28
30
35
Array ( [wang] => 18 [li] => 20 [zhang] => 25 )
要在 foreach 中修改原数组元素,可以通过引用来实现,将上面的例子更改为:
<?php
$arr_age = array("wang"=>18, "li"=>20, "zhang"=>25);
foreach ($arr_age as &$age) {
$age = $age+10;
echo $age,'<br />';
}
// 输出原数组
print_r($arr_age);
?>
运行例子输出:
18
20
25
Array ( [wang] => 28 [li] => 30 [zhang] => 35 )
遍历多维数组
foreach 语法结构只能用于遍历一维数组,要遍历多维数组,一般是将 foreach 嵌套递归使用或者将原数组分割为一维数组再进行 foreach 遍历。
一二维数组混合的例子:
$arr_age = array("wang"=>18, "li"=>20, "zhang"=>array("name"=>"小张", "age"=>25));
foreach ($arr_age as $age) {
if(is_array($age)){
foreach ( $age as $detail) {
echo $detail,'<br />';
}
} else {
echo $age,'<br />';
}
}
?>
运行该例子输出:
18
20
小张
25
对多维数组的遍历处理就要根据实际的数据结构而采取最合适的处理方式。
延伸预读
PHP 数组是通过哈希表(HashTable)表实现的,因此 foreach 遍历数组时是依据元素添加的先后顺序来进行的。如果想按照索引大小遍历,应该使用 for() 循环遍历。
for() 循环遍历数组
如果是操作连续键值的数组,也可以采用 for() 循环来遍历数组:
<?php
$arr_age = array(18, 20, 25);
$num = count($arr_age);
for($i = 0; $i < $num; $i++){
echo $arr_age[$i]."<br />";
}
?>
运行例子输出如下:
18
20
25
提示
也可以用 list() 和 each() 结合来遍历数组,但测试发现效率不如 foreach() 。
参考阅读
print_r():打印输出数组内容及结构
is_array():检测变量是否是数组
PHP 计算数组中的单元数目或对象中的属性个数 count 函数
count() 函数用于计算数组中的单元数目或对象中的属性个数。
is_array()
PHP count() 函数用于计算数组中的单元数目或对象中的属性个数,返回数组的单元个数或对象中的属性个数。
语法:
int count( mixed var [, int mode] )
如果 var 是非数组的普通变量,则返回 1 ,对于不存在、未初始化或空数组返回 0 。
可选参数 mode 设为 COUNT_RECURSIVE(或 1),count() 将递归地对数组计数,这对计算多维数组的所有单元尤其有用,但 count() 识别不了无限递归。mode 的默认值是 0 。
例子:
<?php
echo count($x); //输出:0
$a = 2;
echo count($a); // 输出:1
$arr_age = array(18, 20, 25);
echo count($arr_age); // 输出:3
?>
sizeof() 是本函数的别名。
提示:请用 isset() 来检测变量是否初始化。
小技巧
在实际应用中,经常会根据数组的大小来进行一些循环操作,建议将 count() 写在循环体外:
<?php
$arr_age = array(18, 20, 25);
$count = count($arr_age);
for($i=1;$i<=$count;$i++){
echo "第 $i 次循环";
}
?>
这样不必每次循环都去执行 count() 计算,当然这不是必须的。
PHP 计算数组中值的和与乘积 array_sum 与 array_product 函数
array_sum() 函数用于计算数组中所有值的和。
array_product() 函数用于计算数组中所有值的乘积。
array_sum()
PHP array_sum() 函数用于计算数组中所有值的和,以整数或浮点数返回计算结果,非数字的单元将视作 0 。
语法:
number array_sum( array array )
例子:
<?php
$arr_a = array(1, 2, 3, "a");
echo array_sum($arr_a); //输出:6
?>
array_product()
PHP array_product() 函数用于计算数组中所有值的乘积,以整数或浮点数返回计算结果,非数字的单元将视作 0 。
语法:
number array_product( array array )
例子:
<?php
$arr_a = array(1, 2, 3);
echo array_product($arr_a); //输出:6
$arr_b = array(1, 2, 3, "abc");
echo array_product($arr_b); //输出:0
?>
PHP 统计数组中所有的值出现的次数 array_count_values 函数
array_count_values() 函数用于统计数组中所有的值出现的次数。
array_count_values()
PHP array_count_values() 函数用于统计数组中所有的值出现的次数,返回一个数组,其元素的键名是原数组的值,键值是该值在原数组中出现的次数。
语法:
array array_count_values( array array )
例子:
<?php
$arr_a = array("a", "b", "a", 1);
print_r(array_count_values($arr_a));
?>
例子输出结果如下:
Array
(
[a] => 2
[b] => 1
[1] => 1
)
参考阅读
count():计算数组中的单元数目
PHP 检查数组中是否存在某个值 in_array 函数
in_array() 函数用于检查数组中是否存在某个值。
in_array()
PHP in_array() 函数检查数组中是否存在某个值,如果存在则返回 TRUE ,否则返回 FALSE 。
语法:
bool in_array( mixed needle, array array [, bool strict] )
参数说明: 参数 说明
needle 需要在数组中搜索的值,如果是字符串,则区分大小写
array 需要检索的数组
strict 可选,如果设置为 TRUE ,则还会对 needle 与 array 中的值类型进行检查
例子:
<?php
$arr_a = array("a", "b", "c", 1);
if(in_array("a", $arr_a)){
echo '字符 a 在 $arr_a 数组中存在';
} else {
echo '字符 a 在 $arr_a 数组中不存在';
}
?>
例子输出结果如下:
字符 a 在 $arr_a 数组中存在
严格检查的例子:
<?php
$arr_a = array("a", "b", "c", 1);
if(in_array("1", $arr_a, TRUE)){
echo '字符 1 在 $arr_a 数组中存在';
} else {
echo '字符 1 在 $arr_a 数组中不存在';
}
?>
例子输出结果如下:
字符 1 在 $arr_a 数组中不存在
数组作为 needle 的例子:
<?php
$arr_a = array(array("a", "b"), 1, 2);
$arr_b = array("a", "b");
if(in_array($arr_b, $arr_a)){
echo '数组 $arr_b 在 $arr_a 数组中存在';
} else {
echo '数组 $arr_b 在 $arr_a 数组中不存在';
}
?>
例子输出结果如下:
数组 $arr_b 在 $arr_a 数组中存在
PHP 检查给定的键名或索引是否存在于数组中 array_key_exists 函数
array_key_exists() 函数用于检查给定的键名或索引是否存在于数组中。
array_key_exists()
PHP array_key_exists() 函数用于检查给定的键名或索引是否存在于数组中,如果存在则返回 TRUE ,否则返回 FALSE 。
语法:
bool array_key_exists( mixed key, array search )
参数 key 是给定的键名或索引,可以是任何能作为数组索引的值。
array_key_exists() 函数也可用于对象,关于对象参见《PHP 类与对象》。
例子:
<?php
$arr_a = array('id' => 1, 'name' => "admin");
if(array_key_exists('name', $arr_a)){
echo '键名 name 存在于数组 $arr_a 中';
} else {
echo '键名 name 不存在于数组 $arr_a 中';
}
?>
例子输出结果如下:
键名 name 存在于数组 $arr_a 中
提示
array_key_exists() 函数对于值为 null 的数组元素仍返回 TRUE。若要对数组元素是否为 null 做检查,请使用 isset()。
PHP 在数组中搜索给定的值 array_search 函数
array_search() 函数用于在数组中搜索给定的值。
array_array()
PHP array_search() 函数用于在数组中搜索给定的值,如果成功则返回相应的键名,否则返回 FALSE 。
语法:
mixed array_search( mixed needle, array array [, bool strict] )
参数说明: 参数 说明
needle 需要在数组中搜索的值,如果是字符串,则区分大小写
array 需要检索的数组
strict 可选,如果设置为 TRUE ,则还会对 needle 与 array 中的值类型进行检查
提示
由于索引数组的起始索引数字可能是 0 ,因此该函数也可能返回与 FALSE 等值的非布尔值,例如 0 或者 "",所以需要使用 === 运算符对函数返回的值进行严格校验。
例子:
<?php
$arr_a = array(0 => "a", 1 => "b", 2 => "c");
$key = array_search("a", $arr_a);
if( $key !== FALSE ){
echo "键名为:$key";
} else {
echo '无匹配结果';
}
?>
例子输出结果如下:
键名为:0
如果 needle 在 array 中出现不止一次,则返回第一个匹配的键。要返回所有匹配值的键,请使用 array_keys() 函数。
参考阅读
in_array():检查数组中是否存在某个值
PHP list() 将数组中的值赋给变量
list() 语言结构用于把数组中的值赋给一些变量。
list()
PHP list() 用一步操作把数组中的值赋给一些变量。同 array() 一样,list() 不是真正的函数,而是语言结构。
语法:
void list( mixed var, mixed ... )
注意: list() 仅能用于数字索引的数组并假定数字索引从 0 开始。
例子1:
<?php
$arr_age = array(18, 20, 25);
list($wang, $li, $zhang) = $arr_age;
echo $wang; //输出:18
echo $zhang; //输出:25
?>
例子2,数据表查询:
$result = mysql_query("SELECT id, username, email FROM user",$conn);
while(list($id, $username, $email) = mysql_fetch_row($result)) {
echo "用户名:$username<br />";
echo "电子邮箱:$email";
}
list() 使用数组索引
list() 中允许使用另一个数组来接收数组赋值过来的值,只是当使用索引数组的时候,其赋值顺序跟 list() 中列出的顺序是相反的:
$arr_age = array(18, 20, 25);
list($a[0], $a[1], $a[2]) = $arr_age;
print_r($a);
输出的 $a 数组结构如下:
Array ( [2] => 25 [1] => 20 [0] => 18 )
参考阅读
mysql_fetch_row():从查询结果中取得一行作为索引数组
PHP 数组排序 sort、asort 及 ksort 系列函数
sort() 函数用于对数组单元从低到高进行排序。
rsort() 函数用于对数组单元从高到低进行排序。
asort() 函数用于对数组单元从低到高进行排序并保持索引关系。
arsort() 函数用于对数组单元从高到低进行排序并保持索引关系。
ksort() 函数用于对数组单元按照键名从低到高进行排序。
krsort() 函数用于对数组单元按照键名从高到低进行排序。
sort()
PHP sort() 函数用于对数组单元从低到高进行排序,如果成功则返回 TRUE,失败则返回 FALSE。
注意:本函数会为排序的数组中的单元赋予新的键名,这将删除原有的键名而不仅是重新排序。
语法:
bool sort( array &array [, int sort_flags] )
可选参数 sort_flags 用于改变排序的行为:
sort_flags 取值 说明
SORT_REGULAR 正常比较单元
SORT_NUMERIC 单元被作为数字来比较
SORT_STRING 单元被作为字符串来比较
SORT_LOCALE_STRING 根据当前的区域(locale)设置来把单元当作字符串比较
例子:
<?php
$arr = array("b", "a", "c");
sort($arr);
print_r($arr);
?>
运行该例子输出:
Array ( [0] => a [1] => b [2] => c )
在本例中, $arr 数组单元被按照字母顺序排序,而数组单元经过排序后,键值重新分配。
rsort()
PHP rsort() 函数行为与 sort() 相反,对数组单元进行由高到低排序,请参考 sort() 函数使用。
asort()
PHP asort() 函数用于对数组单元从低到高进行排序并保持索引关系,如果成功则返回 TRUE,失败则返回 FALSE。
语法:
bool asort( array &array [, int sort_flags] )
可选参数 sort_flags 用以改变排序的行为,具体参见 sort()。
例子:
<?php
$arr = array("b", "a", "c");
asort($arr);
print_r($arr);
?>
运行该例子输出:
Array ( [1] => a [0] => b [2] => c )
arsort()
PHP arsort() 函数行为与 asort() 相反,对数组单元进行由高到低排序并保持索引关系,请参考 asort() 函数使用。
ksort()
PHP ksort() 函数用于对数组单元按照键名从低到高进行排序,如果成功则返回 TRUE,失败则返回 FALSE。
本函数会保留原来的键名,因此常用于关联数组。
语法:
bool ksort( array &array [, int sort_flags] )
可选参数 sort_flags 用以改变排序的行为,具体参见 sort()。
例子:
<?php
$arr = array("b"=>18, "a"=>20, "c"=>25);
ksort($arr);
print_r($arr);
?>
运行该例子输出:
Array ( [a] => 20 [b] => 18 [c] => 25 )
krsort()
PHP krsort() 函数行为与 ksort() 相反,对数组单元按照键名进行由高到低排序,请参考 ksort() 函数使用。
参考阅读
natsort():对数组使用 自然算法 进行排序。
array_multisort():对多个数组或多维数组进行排序。
PHP 对数组使用 自然算法 进行排序 natsort 与 natcasesort 函数
natsort() 函数用于对数组使用 自然算法 进行排序。
natcasesort() 函数用于对数组使用 自然算法 并不区分大小写进行排序。
natsort()
PHP natsort() 函数用于对数组使用 自然算法 进行排序,如果成功则返回 TRUE,失败则返回 FALSE。
本函数实现了一个和人们通常对字母数字字符串进行排序的方法一样的排序算法并保持原有键名和值的关联。
语法:
bool natsort ( array &array )
natsort() 和 sort() 排序比较:
<?php
$arr1 = $arr2 = array("a1", "a11", "a2");
sort($arr1);
print_r($arr1);
echo '<br />';
natsort($arr2);
print_r($arr2);
?>
运行该例子输出:
Array ( [0] => a1 [1] => a11 [2] => a2 )
Array ( [0] => a1 [2] => a2 [1] => a11 )
natcasesort()
natcasesort() 函数行为与 natsort() 函数完全一致,区别之处在于 natcasesort() 不对数组单元区分大小写。
参考阅读
sort():对数组单元从低到高进行排序。
asort():对数组单元从低到高进行排序并保持索引关系。
ksort():对数组单元按照键名从低到高进行排序。
array_multisort():对多个数组或多维数组进行排序。
PHP 对多个数组或多维数组进行排序 array_multisort 函数
array_multisort() 函数用于对多个数组或多维数组进行排序。
array_multisort()
PHP array_multisort() 函数用于一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序,如果成功则返回 TRUE,失败则返回 FALSE。
注意:关联(string)键名保持不变,但数字键名会被重新索引。
语法:
bool array_multisort( array1 [, sort_order][, sort_flags][, array2] ... )
array1 为必须参数,需要排序的数组。可选参数 sort_order 和 sort_flags 意义如下:
可选参数 sort_order 规定排列顺序: sort_order 取值 说明
SORT_ASC 默认值,按照上升顺序排序
SORT_DESC 按照下降顺序排序
可选参数 sort_flags 规定排序类型: sort_flags 取值 说明
SORT_REGULAR 默认值,按照通常方法比较
SORT_NUMERIC 单元被作为数字来比较
SORT_STRING 单元被作为字符串来比较
每个数组之后不能指定两个同类的排序标志,且每个数组后指定的排序标志仅对该数组有效,如果缺少对应标志将采用默认值。
输入数组被当成一个表的列并以行来排序,这类似于 SQL 的 ORDER BY 子句功能。第一个数组是要排序的主要数组,单元的值相同的话就按照下一个输入数组中相应值的大小来排序,依此类推。
例子1:
<?php
$arr1 = array(1, 3, 2, 4);
$arr2 = array("a", "b", "c", "d");
array_multisort($arr1, $arr2);
print_r($arr1);
print_r($arr2);
?>
运行该例子输出:
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 )
Array ( [0] => a [1] => c [2] => b [3] => d )
可见第一个主要数组经过排序后,后面的数组会受到第一个数组的影响而保持对应关系。就上面的例子,哪怕给 arr2 加上 SORT_DESC (降序排列)参数,也不会影响到 arr2 的排序结果。这种影响在多维数组里也存在。
例子2,主数组单元值有同样的情况:
<?php
$arr1 = array(1, 2, 2, 4);
$arr2 = array("a", "b", "c", "d");
array_multisort($arr1, SORT_DESC, $arr2, SORT_ASC);
print_r($arr1);
print_r($arr2);
?>
运行该例子输出:
Array ( [0] => 4 [1] => 2 [2] => 2 [3] => 1 )
Array ( [0] => d [1] => b [2] => c [3] => a )
例子3,多维数组排序:
<?php
$arr = array (array (1, 2, 3, 4), array ("a", "b", "b", "d"));
array_multisort($arr[0], SORT_DESC, $arr[1], SORT_ASC);
print_r($arr);
?>
运行该例子输出:
Array
(
[0] => Array
(
[0] => 4
[1] => 2
[2] => 2
[3] => 1
)
[1] => Array
(
[0] => d
[1] => b
[2] => c
[3] => a
)
)
例子4,数字与字符混合:
<?php
$arr = array (array ("11", 2, 2, "a"), array (1, 2, 3, 4));
array_multisort($arr[0], SORT_ASC, SORT_STRING, $arr[1], SORT_NUMERIC, SORT_DESC);
var_dump($arr);
?>
运行该例子输出:
array(2) {
[0]=>
array(4) {
[0] => string(2) "11"
[1] => int(2)
[2] => int(2)
[3] => string(1) "a"
}
[1]=>
array(4) {
[0] => int(1)
[1] => int(3)
[2] => int(2)
[3] => int(4)
}
}
参考阅读
sort():对数组单元从低到高进行排序。
asort():对数组单元从低到高进行排序并保持索引关系。
ksort():对数组单元按照键名从低到高进行排序。
natsort():对数组使用 自然算法 进行排序。
PHP 将数组打乱 shuffle 函数
shuffle() 函数用于将数组打乱。
shuffle()
PHP shuffle() 函数随机排列数组单元的顺序(将数组打乱)。本函数为数组中的单元赋予新的键名,这将删除原有的键名而不仅是重新排序。
语法:
bool shuffle ( array &array )
例子1:
<?php
$arr = range(1,8);
print_r($arr);
echo '<br />';
shuffle($arr);
print_r($arr);
?>
运行该例子输出:
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 [6] => 7 [7] => 8 )
Array ( [0] => 6 [1] => 1 [2] => 3 [3] => 2 [4] => 5 [5] => 7 [6] => 8 [7] => 4 )
需要说明的是,每次刷新页面,shuffle($arr) 后的 print_r($arr) 结果都是不一样的。而自 PHP 4.2.0 起,也不再需要用 srand() 等函数给随机数发生器播种而由系统自动完成。
例子2,使用关联数组:
<?php
$arr = array("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);
shuffle($arr);
print_r($arr);
?>
运行该例子输出:
Array ( [0] => 5 [1] => 2 [2] => 1 [3] => 3 [4] => 4 )
当然,每次刷新页面输出的结果都是不一样的。
参考阅读
range():建立一个包含指定范围单元的数组。
sort():对数组单元从低到高进行排序。
asort():对数组单元从低到高进行排序并保持索引关系。
ksort():对数组单元按照键名从低到高进行排序。
natsort():对数组使用 自然算法 进行排序。