php中怎样从一个数组中随机取一个元素出来呢?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php中怎样从一个数组中随机取一个元素出来呢?相关的知识,希望对你有一定的参考价值。
在php中如何随机从一个array数组中取一个元素出来呢?php有内置这样的函数吗?请各位大虾赐教~
用array_rand()函数吧,它可以从一个数组中随机取一个或者多个下标出来,有了下标,就可以从原数组拿到对应的元素了。它的用法也很简单:array_rand($arr[, $num])$arr == 用来取元素的数组$num == 随机取下标的个数其中第二个参数 $num 是可选的,默认为1 。注意:它的返回值在第二个参数大于 1 的时候是一个数组;当第二个参数不设或者传值 1 的时候是一个下标。简单的示例代码如下:1、第二个参数不传值的情况;$arr = Array('a', 'b');$rndKey = array_rand($arr);echo $arr[$rndKey];//输出 a 或者 b2、第二个参数传值大于 1 的情况;$arr = Array('a', 'b', 'c', 'd');$rndKey = array_rand($arr, 2);print_r($rndKey]);//输出一个随机key的数组 参考技术A 用array_rand()函数吧,它可以从一个数组中随机取一个或者多个下标出来,有了下标,就可以从原数组拿到对应的元素了。它的用法也很简单:array_rand($arr[, $num])$arr == 用来取元素的数组$num == 随机取下标的个数其中第二个参数 $num 是可选的,默认为1 。注意:它的返回值在第二个参数大于 1 的时候是一个数组;当第二个参数不设或者传值 1 的时候是一个下标。简单的示例代码如下:1、第二个参数不传值的情况;$arr = Array('a', 'b');$rndKey = array_rand($arr);echo $arr[$rndKey];//输出 a 或者 b2、第二个参数传值大于 1 的情况;$arr = Array('a', 'b', 'c', 'd');$rndKey = array_rand($arr, 2);print_r($rndKey]);//输出一个随机key的数组 参考技术B它的用法也很简单:array_rand($arr[, $num])$arr == 用来取元素的数组$num == 随机取下标的个数其中第二个参数 $num 是可选的,默认为1 。注意:它的返回值在第二个参数大于 1 的时候是一个数组;当第二个参数不设或者传值 1 的时候是一个下标。简单的示例代码如下:1、第二个参数不传值的情况;$arr = Array('a', 'b');$rndKey = array_rand($arr);echo $arr[$rndKey];//输出 a 或者 b2、第二个参数传值大于 1 的情况;$arr = Array('a', 'b', 'c', 'd');$rndKey = array_rand($arr, 2);print_r($rndKey]);//输出一个随机key的数组
参考技术C $input = array("Neo", "Morpheus", "Trinity", "Cypher", "Tank");
$rand_keys = array_rand($input, 2);
print $input[$rand_keys[0]] . "\n";
print $input[$rand_keys[1]] . "\n"; 参考技术D 不知道 、这个东西太专业
我想从一个名字组 数据列表中随机筛选几个人出来 用php怎么写?
我想从一个名字字段组中随机筛选几个人出来
如某个ID下,姓名字段中有这样的数据:李一,李二,李三,李四,王一,王二,王三,王四,张一,张二,张三,张四
我想把这12个人 随机挑出4个人, 比如选出了:李一,,王二,王三,张三 请问用PHP如何来筛选?
感谢!
echo "<br>\n";
$str = "李一,李二,李三,李四,王一,王二,王三,王四,张一,张二,张三,张四"; //某id下的名字字段的全部文字内容,设为变量$str
$temp = explode(",", $str); //以逗号拆分字符串$str,变成数组$temp
$result = array(); //最终数组,先初始化下
for($i=0;$i<4;$i++) //循环4次取随机名字
$key = rand(0, count($temp)-1);//获取随机数
$result[] = $temp[$key];//通过随机数找到$temp数组中的值,即随机的名字,赋值给$result数组
unset($temp[$key]); //把刚才取出的名字从$temp数组中删除
sort($temp); //从新排列下$temp数组的顺序,使其键值还是从0开始,为下次循环做准备
echo "结果为:";
echo "<br>\n";
print_r($result);
echo "<br>\n";
echo implode(",", $result);
echo "<br>\n";
echo "<br>\n";
echo "方法二:";
echo "<br>\n";
$str = "李一,李二,李三,李四,王一,王二,王三,王四,张一,张二,张三,张四"; //某id下的名字字段的全部文字内容,设为变量$str
$temp = explode(",", $str); //以逗号拆分字符串$str,变成数组$temp
$rand_key = array_rand($temp, 4); //从$temp数组中找出4个随机的key值
$result = array(); //最终数组,先初始化下
foreach($rand_key as $val) //循环4个键值
$result[] = $temp[$val]; //通过键值从temp数组找到对应的内容,即随机的名字,赋值给$result数组
echo "结果为:";
echo "<br>\n";
print_r($result);
echo "<br>\n";
echo implode(",", $result);来自:求助得到的回答 参考技术A 用sql语句是达不到这种效果,可以查询出这个字段到数组,然后用php随机取出4个
php取的方式也有多种
可以使用 array_rand(<数组>,[抽取元素的个数]); 函数随机抽取四个,也可以使用随机索引,取出四个,也可以先使用 shuffle 函数随机打乱数组,然后取出前四个或后四个
不过都要先判断数组的长度,小于4就全部要 参考技术B 系统函数array_rand($array, 4);第一个参数是原数组,第二个参数是随机挑出来几个 参考技术C array_rand($arry,$num); //$arry 数组 $num 随机的个数
以上是关于php中怎样从一个数组中随机取一个元素出来呢?的主要内容,如果未能解决你的问题,请参考以下文章