一、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()
函数用来生成az、AZ、0~9这三组字符,然后使用array_merge()
函数将它们合并成一个数组,调用shuffle()
函数随机打乱后,使用implode()
函数将它们转换成字符串,用substr()
函数取出前8位作为随机生成的密码。
五、shuffle函数的注意事项
在使用shuffle()
函数的时候,有一些需要注意的事项,例如:
- 如果数组为空,那么
shuffle()
函数会返回false
- 如果数组中只有一个元素,那么
shuffle()
函数不会改变其顺序 - 如果要打乱的数组中有
null
元素,shuffle()
函数会将其转换成空字符串""