我想从一个名字组 数据列表中随机筛选几个人出来 用php怎么写?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我想从一个名字组 数据列表中随机筛选几个人出来 用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 随机的个数
将多个元组转换为列表
【中文标题】将多个元组转换为列表【英文标题】:convert multiple tuple into list 【发布时间】:2020-06-28 05:13:46 【问题描述】:我正在处理我读取的多个数据
for x in list_data: #i have 3 data inside
data_file = static/upload_file/'+x
出于某种原因,我需要从每个数据中选择一个值,我使用 pandas 数据框读取数据,所以我总是将我想从每个数据中选择的值附加到 for 循环之外的列表中。我得到的结果是多个元组
result = [[1],[2],[3],[4],[5],[...]]
我已经尝试过像这样使用 itertools
result = list(chain(*result))
和
final_result = []
for t in result:
for x in t:
final_result.append(x)
输出总是这样:
[1,2,3,4,5,[1],[2],[3],[4],[5],[[1],[2],[3],[4],[5][..]]]
我想要的输出是:
[1,2,3,4,5,1,2,3,4,5,1,2,3,4,5]
完整的代码是这样的:
resul = []
final_result = []
for x in list_data: #i have 3 data inside
data_file = static/upload_file/'+x
#read_csv~
result.append((some_data))
for t in result:
for x in t:
final_result.append(x)
如何将多个元组转换为 1 个列表?提前致谢。
【问题讨论】:
你可能想要extend
而不是append
的声音
是的,你是对的,谢谢@alaniwi
【参考方案1】:
当您将项目添加到 final_result 列表时,请使用 extend 而不是 append。区别如下:
res = [1, 2, 3]
res.append([4, 5])
print(res)
[1, 2, 3, [4, 5]]
res = [1, 2, 3]
res.extend([2, 4])
print(res)
[1, 2, 3, 2, 4]
【讨论】:
【参考方案2】:试试下面的代码:
output_list = []
for i in results:
if isinstance(i, list):
output_list.extend(i)
else:
output_list.append(i)
【讨论】:
以上是关于我想从一个名字组 数据列表中随机筛选几个人出来 用php怎么写?的主要内容,如果未能解决你的问题,请参考以下文章