首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何选择一组随机行?

如何选择一组随机行?
EN

Stack Overflow用户
提问于 2012-09-21 14:49:05
回答 4查看 162关注 0票数 0

如何选择一组随机行?

的重要位元:

  1. 我需要指定要通过变量选择的随机行数。
  2. 例如,我想要选择的行数是10,那么就必须选择10 不同的行。我不想让它挑出同一行几次,直到它有10。

下面的代码挑出了一个随机行,我如何根据上面的规范来调整它呢?

代码语言:javascript
复制
<?php $rows = get_field('repeater_field_name');
$row_count = count($rows);
$i = rand(0, $row_count - 1);

echo $rows[$i]['sub_field_name']; ?>
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-09-21 14:54:15

代码语言:javascript
复制
<?php
    $rows = get_field('repeater_field_name');
    $row_count = count($rows);
    $rand_rows = array();

    for ($i = 0; $i < min($row_count, 10); $i++) {
        // Find an index we haven't used already (FYI - this will not scale
        // well for large $row_count...)
        $r = rand(0, $row_count - 1);
        while (array_search($r, $rand_rows) !== false) {
            $r = rand(0, $row_count - 1);
        }
        $rand_rows[] = $r;

        echo $rows[$r]['sub_field_name'];
    }
?>

这是一个更好的实施:

代码语言:javascript
复制
<?
$rows_i_want = 10;
$rows = get_field('repeater_field_name');

// Pull out 10 random rows
$rand = array_rand($rows, min(count($rows), $rows_i_want));

// Shuffle the array
shuffle($rand);                                                                                                                     

foreach ($rand as $row) {
    echo $rows[$row]['sub_field_name'];
}
?>
票数 2
EN

Stack Overflow用户

发布于 2012-09-21 14:53:50

只需循环通过随机行处理您想要得到的随机行数。

代码语言:javascript
复制
<?php
$rows_to_get=10;
$rows = get_field('repeater_field_name');
$row_count = count($rows);
$x=0
while($x<$rows_to_get){
    echo $rows[rand(0, $row_count - 1)]['sub_field_name'];
    $x++;
}
?>
票数 0
EN

Stack Overflow用户

发布于 2012-09-21 15:00:28

你可以试试这个

代码语言:javascript
复制
$rows = get_field('repeater_field_name');
var_dump(__myRand($rows, 10));

function __myRand($rows, $total = 1) {
    $rowCount = count($rows);
    $output = array();
    $x = 0;
    $i = mt_rand(0, $rowCount - 1);

    while ( $x < $total ) {
        if (array_key_exists($i, $output)) {
            $i = mt_rand(0, $rowCount - 1);
        } else {
            $output[$i] = $rows[$i]['sub_field_name'];
            $x ++;
        }
    }
    return $output ;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12532881

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档