首页 > 解决方案 > 在 PHP 中使用 foreach 回显来自 JSON 的数据

问题描述

基本上我拥有的是两个 JSON 文件。一个 JSON 文件包含一组问题,第二个 JSON 文件包含用户答案。我想要做的是从一个 json 文件中回显问题,并在 div 中回显另一个 json 文件中的答案。

我尝试在 foreach 中放置一个 foreach。这在一定程度上确实有效,但每个答案都会多次重复问题。

<?php
$questions = "../induction.json";
$contents = file_get_contents($questions,0,null,null);
$qArray = json_decode($contents, JSON_PRETTY_PRINT);

$answers = $user."_induction.json";
$contentsA = file_get_contents($answers,0,null,null);
$qArrayA = json_decode($contentsA, JSON_PRETTY_PRINT);

?>

<div role="tabpanel" class="tab-pane fade" id="messages_with_icon_title">
<b>Quiz</b>
 <?php
    $num = 0;
    foreach($qArray as $key => $value){
       foreach($qArrayA as $key2 => $value2){
 ?>
 <form method="POST">
 <div class="row clearfix">
   <div class="col-lg-4 col-md-4 col-sm-6 col-xs-12">
     <div class="card">
        <div class="header">
            <h2><?php echo $value['question']; ?></h2>
         </div>
         <div class="body">
         <?php
             echo $value2;
         ?>
      </div>
   </div>
 </div>
</div> 
<?php   } 
} ?>
<input type="submit" class="btn btn-success waves-effect" name="submit" value="Submit" />
</form>
</div>

这是结果:https ://imgur.com/a/sQEQGBz

标签: phpjson

解决方案


这就是循环的样子。请注意,我将<form>标签拉出循环,因为它不应该在里面。

<form method="POST">
<?php
for ($i = 0; $i < count($qArray); $i++) 
{
?>
    <div class="row clearfix">
        <div class="col-lg-4 col-md-4 col-sm-6 col-xs-12">
            <div class="card">
                <div class="header">
                    <h2><?php echo $qArray[$i]; ?></h2>
                </div> <!-- .header -->
                <div class="body">
                    <?php echo $qArrayA[$i]; ?>
                </div> <!-- .body -->
            </div> <!-- .card -->
        </div> <!-- .col-lg-4 -->
    </div> <!-- .row -->
<?php } ?>
<input type="submit" class="btn btn-success waves-effect" name="submit" value="Submit" />
</form>

推荐阅读