我有两个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/
答案 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) {
....