前面我们介绍了可以使用《array_rand() 函数》随机获取数组元素。在 PHP 中还有另一个函数,它能够将数组随机打乱,或者说它可以随机排序数组——shuffle() 函数。
shuffle() 函数不仅会将数组随机打乱,还会删除数组原有的键名,并重新建立新的键名,函数的语法格式如下:
shuffle($array)
其中 $array 为待操作的数组。函数运行成功时会返回 TRUE,运行失败则返回 FALSE。
提示:shuffle() 函数只对数组的第一维度适用,对于多维数组中第一维度之外的维度则无效。
与数组排序相关的函数
函数
说明
对数组元素进行升序排序(从小到大)。
对数组元素进行降序排序(从大到小)。
对数组元素进行升序排序(从小到大),并保持索引关系。
对数组元素进行降序排序(从大到小),并保持索引关系。
对数组元素进行随机排序,也就是随机打乱数组。
【示例】使用 shuffle() 函数打乱数组顺序。
$info = array(
'id' => 1234,
'url' => 'http://c.biancheng.net/php/',
'language' => 'PHP',
'article' => 'shuffle()函数'
);
echo '
';
echo '数组打乱顺序前:';
print_r($info);
echo '数组打乱顺序后:';
shuffle($info);
print_r($info);
?>
运行结果如下:
数组打乱顺序前:Array
(
[id] => 1234
[url] => http://c.biancheng.net/php/
[language] => PHP
[article] => shuffle()函数
)
数组打乱顺序后:Array
(
[0] => http://c.biancheng.net/php/
[1] => PHP
[2] => shuffle()函数
[3] => 1234
)
与 array_rand() 函数类似,使用 shuffle() 函数同样可以实现生成随机验证码的功能,示例代码如下:
function verCode(){
$arr = array_merge(range('A','Z'), range('a', 'z'), range('1', '9'));
shuffle($arr);
$newArr = array_slice($arr, 0, 4);
$str = implode('', $newArr);
return $str;
}
echo verCode().'
';
echo verCode().'
';
echo verCode().'
';
?>
运行结果如下:
WLmj
ngqO
EolQ
注意:因为 shuffle() 函数是随机将数组打乱,所以每次执行的结果会不一样。