一、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()函数会将其转换成空字符串""