2

我有两个 foreach 循环。第一个从 Wordpress 中获取大量问题,第二个应该获取多个答案。如果不涉及问题的一些随机化,这是直截了当的,这会让人感到困惑。

这是两个没有被随机化的 foreach 循环。

<?php 
$repeater = get_field('step_by_step_test');
foreach( $repeater as $repeater_row ){ ?>
    <p><?php echo $repeater_row['question']; ?></p>
    <?php $rows = $repeater_row['answer_options'];
    foreach ($rows as $row){ ?>
        <?php echo $row['answer']; ?><br />
    <?php } ?>
<?php } ?>

这会遍历每个问题并获取多个答案。

我怎样才能将它随机化问题?这是我的尝试,这适用于获取一组随机的问题,但我在答案部分遇到错误(为 foreach 提供的参数无效)。

<?php 
$amount = get_field('select_number_of_questions');
$repeater = get_field('step_by_step_test');
$random_rows = array_rand( $repeater, $amount );
echo implode(', ', $random_rows);
    foreach( $random_rows as $repeater_row ){ ?>
        <p><?php echo $repeater[$repeater_row]['question']; ?></p>
        <?php $rows = get_sub_field('answer_options');
        foreach ($rows as $row){ ?>
            <?php echo $row['answer']; ?><br />
        <?php } ?>
    <?php } ?>

我将此插件用于 wordpress - http://www.advancedcustomfields.com/

4

1 回答 1

3

首先,我将重写您的第一个代码块,使其看起来不像反刍。

<?php
$repeater = get_field("step_by_step_test");
foreach($repeater as $repeater_row) {
    echo "<p>".$repeater_row['question']."</p>";
    $rows = $repeater_row['answer_options'];
    foreach($rows as $row) {
        echo $row['answer']."<br />";
    }
}
?>

现在来看看魔术:shuffle($rows)在该行之前添加foreach($rows as $row) {,答案将以随机顺序出现。

编辑以回应评论:像这样开始你的代码:

$repeater = get_field("step_by_step_test");
shuffle($repeater);
$repeater_limit = array_slice($repeater,0,5);
foreach($repeater_limit as $repeater_row) {
    ....
于 2013-03-26T15:46:19.933 回答