我想从一个名字组 数据列表中随机筛选几个人出来 用php怎么写?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我想从一个名字组 数据列表中随机筛选几个人出来 用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 随机的个数

将多个元组转换为列表

【中文标题】将多个元组转换为列表【英文标题】: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怎么写?的主要内容,如果未能解决你的问题,请参考以下文章

怎么用python搜索文本并筛选出来?

matlab 哪个函数可以从一组数据中随机抽取一部分出来

如何用python实现两个文件重复数据筛选并统计

编程:如何生成一组随机数字?

PHP 想从1组二维数组里取1个下标的值去其他数组查询另1个下标的值,然后用查询出来值替换原来二维数组里的

thinkphp如何过滤名字重复的记录?