您的位置:

PHP中shuffle函数的完整教程

一、shuffle函数是什么

在PHP中,shuffle()函数可以将数组中的元素随机打乱,返回值是一个布尔值。用法如下:

$my_array = array("red","green","blue","yellow","purple");
shuffle($my_array);
print_r($my_array);

输出结果是:

Array
(
    [0] => green
    [1] => red
    [2] => purple
    [3] => yellow
    [4] => blue
)

可以看到,shuffle()函数将数组中的元素随机打乱,打乱后的数组下标是随机的。如果打乱成功,函数返回true,否则返回false。

注意:shuffle()函数只能作用于数组,如果需要将字符串打乱,需要先将字符串转换成数组。例如:

$str = "hello world";
$arr = str_split($str); //将字符串转换成数组
shuffle($arr);
$new_str = implode("",$arr); //将数组转换成字符串
echo $new_str;

二、shuffle函数的参数

shuffle()函数只有一个参数,即要打乱的数组。如果要打乱的数组是关联数组,那么该函数会重置数组下标。例如:

$my_array = array("name"=>"Tom","age"=>18,"gender"=>"male");
shuffle($my_array);
print_r($my_array);

输出结果是:

Array
(
    [0] => Tom
    [1] => 18
    [2] => male
)

可以看到,由于该数组是关联数组,shuffle()函数将其转换成了索引数组,并将原本的关联下标丢弃了。

三、shuffle函数应用场景

shuffle()函数在一些有关随机排序的场景中被广泛使用,例如在开发答题APP的时候,我们需要将选项A、B、C、D随机排序,这时候就可以使用shuffle()函数。同时,shuffle()函数也可以用来生成随机的抽奖结果,例如:

$prize_array = array("iphone X","kindle","starbucks coupon","nothing");
shuffle($prize_array);
$prize = $prize_array[0];
echo "Congratulations! Your prize is ".$prize;

其中$prize_array是一个奖品数组,调用shuffle()函数随机排序后,取出第一个元素作为中奖者的奖品,输出结果类似:

Congratulations! Your prize is kindle

四、shuffle函数的小技巧

shuffle()函数可以用来生成随机的密码字符串,例如:

$char_array = array_merge(range('a','z'),range('A','Z'),range('0','9'));
shuffle($char_array);
$password = substr(implode('', $char_array), 0, 8);
echo $password;

其中range()函数用来生成a~z、A~Z、0~9这三组字符,然后使用array_merge()函数将它们合并成一个数组,调用shuffle()函数随机打乱后,使用implode()函数将它们转换成字符串,用substr()函数取出前8位作为随机生成的密码。

五、shuffle函数的注意事项

在使用shuffle()函数的时候,有一些需要注意的事项,例如:

1.如果数组为空,那么shuffle()函数会返回false

2.如果数组中只有一个元素,那么shuffle()函数不会改变其顺序

3.如果要打乱的数组中有null元素,shuffle()函数会将其转换成空字符串""