本文主要是介绍将数组打乱 shuffle 函数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
bool shuffle ( array &$array )
本函数打乱(随机排列单元的顺序)一个数组。为数组中的单元赋予新的键名,这将删除原有的键名而不仅是重新排序。<?php
$arr = range(1,8);
print_r($arr);
echo '<br />';
shuffle($arr);
print_r($arr);
?>运行该例子输出:Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 [6] => 7 [7] => 8 )
Array ( [0] => 6 [1] => 1 [2] => 3 [3] => 2 [4] => 5 [5] => 7 [6] => 8 [7] => 4 ) 需要说明的是,每次刷新页面,shuffle($arr) 后的 print_r($arr) 结果都是不一样的。而自 PHP 4.2.0 起,也不再需要用 srand() 等函数给随机数发生器播种而由系统自动完成。
例子2,使用关联数组:<?php
$arr = array("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);
shuffle($arr);
print_r($arr);
?>运行该例子输出:Array ( [0] => 5 [1] => 2 [2] => 1 [3] => 3 [4] => 4 )如果想保留原有的键和值的关联,则可以自己用array_keys()获取所有的键后,进行shuffle()打乱,然后遍历 这一过程来封装一个函数,或是用下面做法:关联数组和索引数组都可以用function array_shuffle($array)
{//不是数组if(!is_array($array)) {return array();}//如果为空或者只有1项if(($count=count($array))<=1){return $array;}//得到打乱的键,array_rand(array,number),第二个参数用来确定要选出几个元素。如果选出的元素不止一个,则返回包含随机键名的数组,否则返回该元素的键名。$rand_keys = array_rand($array, count($array));$newArr=array();foreach($rand_keys as $v) {$newArr[$v] = $array[$v];}return $newArr;
}
这篇关于将数组打乱 shuffle 函数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!