使用数组值匹配两个foreach循环

时间:2013-03-26 15:42:03

标签: php wordpress

我有两个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/

1 个答案:

答案 0 :(得分: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) {
    ....