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 "方法一:";
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中怎样从一个数组中随机取一个元素出来呢?的主要内容,如果未能解决你的问题,请参考以下文章

PHP中怎么从一个二维数组中随机取出一个值?

如何从已经规定的数组中随机取出一个元素?

php中如果从一堆元素中随机出2个元素,举个例子:张三,李四,王五,刘六...有十个名字,

jAVA如何使一个数组里面的元素随机交换位置

IDL 中 如何从一个数组中随机取出3个数?

java中怎么从一个数组中随机的取N个值