首页 > 编程笔记 > PHP笔记

PHP shuffle():随机打乱数组

前面我们介绍了可以使用《array_rand() 函数》随机获取数组元素。在 PHP 中还有另一个函数,它能够将数组随机打乱,或者说它可以随机排序数组——shuffle() 函数。

shuffle() 函数不仅会将数组随机打乱,还会删除数组原有的键名,并重新建立新的键名,函数的语法格式如下:

shuffle($array)

其中 $array 为待操作的数组。函数运行成功时会返回 TRUE,运行失败则返回 FALSE。

提示:shuffle() 函数只对数组的第一维度适用,对于多维数组中第一维度之外的维度则无效。

与数组排序相关的函数
函数 说明
sort() 对数组元素进行升序排序(从小到大)。
rsort() 对数组元素进行降序排序(从大到小)。
asort() 对数组元素进行升序排序(从小到大),并保持索引关系。
arsort() 对数组元素进行降序排序(从大到小),并保持索引关系。
shuffle() 对数组元素进行随机排序,也就是随机打乱数组。

【示例】使用 shuffle() 函数打乱数组顺序。
<?php
    $info = array(
        'id'       => 1234,
        'url'      => 'https://www.xinbaoku.com/php/',
        'language' => 'PHP',
        'article'  => 'shuffle()函数'
    );
    echo '<pre>';
    echo '数组打乱顺序前:';
    print_r($info);
    echo '数组打乱顺序后:';
    shuffle($info);
    print_r($info);
?>
运行结果如下:

数组打乱顺序前:Array
(
    [id] => 1234
    [url] => https://www.xinbaoku.com/php/
    [language] => PHP
    [article] => shuffle()函数
)
数组打乱顺序后:Array
(
    [0] => https://www.xinbaoku.com/php/
    [1] => PHP
    [2] => shuffle()函数
    [3] => 1234
)

与 array_rand() 函数类似,使用 shuffle() 函数同样可以实现生成随机验证码的功能,示例代码如下:
<?php
    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().'<br>';
    echo verCode().'<br>';
    echo verCode().'<br>';
?>
运行结果如下:

WLmj
ngqO
EolQ

注意:因为 shuffle() 函数是随机将数组打乱,所以每次执行的结果会不一样。

所有教程

优秀文章