2

foreachループが2つあります。最初はWordpressからたくさんの質問を取得し、2番目は複数の回答を取得することになっています。質問のランダム化が含まれていなければ、これは簡単で、混乱を招きます。

これは、ランダム化されていない2つの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 } ?>

私はこのプラグインをワードプレスに使用しています-http ://www.advancedcustomfields.com/

4

1 に答える 1

3

まず、最初のコードブロックを、噛んだcudのように見えないように書き直します。

<?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 に答える