【问题标题】:Foreach inside if() | if() close issueif() 内部的 foreach | if() 关闭问题
【发布时间】:2014-06-05 07:10:20
【问题描述】:

我将 foreach 语句放在 if 语句中,但在关闭 if 语句时遇到问题。 if 检查“类型”,如果条目类型与选择的“类型”匹配,它将使用 foreach 输出具有该“类型”的所有条目。

这是一个例子。

<?php 
  if($row->type == 'HTML')
  {
    foreach($content as $row): ?>
       <h2><?= $row->title ?></h2> 
       <span class="rating"> <?= $row->rating?>/5</span>
       <p class="desc"><?= $row->description ?> </p>
       <span class="date"><?= $row->created ?> </span>
       <a href="<?= $row->url ?>">View Tutorial</a>
       <span class="diff"><?= $row->difficulty ?></span>
       <span class="auth">Added by </span> 
<?php } else {
      echo 'No results found';
 }
 endforeach; ?>

【问题讨论】:

    标签: php codeigniter if-statement foreach


    【解决方案1】:

    你会在循环中找到$row,所以将if() else保留在foreach中以获取$row-&gt;type

      <?php 
        foreach($content as $row): 
         if($row->type == 'HTML')
          {?>
           <h2><?= $row->title ?></h2> 
           <span class="rating"> <?= $row->rating?>/5</span>
           <p class="desc"><?= $row->description ?> </p>
           <span class="date"><?= $row->created ?> </span>
           <a href="<?= $row->url ?>">View Tutorial</a>
           <span class="diff"><?= $row->difficulty ?></span>
           <span class="auth">Added by </span> 
        <?php } else {
          echo 'No results found';
     }
    endforeach; ?>
    

    【讨论】:

      【解决方案2】:
      <?php 
      foreach($content as $row):
          if($row->type == 'HTML') { ?>
              <h2><?= $row->title ?></h2> <span class="rating"> <?= $row->rating?>/5</span>
              <p class="desc"><?= $row->description ?> </p>
              <span class="date"><?= $row->created ?> </span>
              <a href="<?= $row->url ?>">View Tutorial</a>
              <span class="diff"><?= $row->difficulty ?></span>
              <span class="auth">Added by </span> 
          <?php 
          } else {
              echo 'No results found';
          }
      endforeach; ?>
      

      【讨论】:

      • 真的很懂问题。 +1
      【解决方案3】:

      你的结构应该是:

      • 如果
        • foreach
          • 内容
        • 结束foreach
      • 其他
        • 其他内容
      • 结束如果

      你的结构是

      • 如果
        • foreach
          • 内容
      • 其他
        • 其他内容
      • 结束如果
        • 结束 foreach

      您可能正在寻找这个:

      <?php 
      $found = FALSE; // used to track whether something has been found.
      foreach($content as $row){
         if($row->type == 'HTML')
         {
             $found = TRUE; // there is at least one row with ->type == 'HTML'
             ?>
             <h2><?= $row->title ?></h2> 
             <span class="rating"> <?= $row->rating?>/5</span>
             <p class="desc"><?= $row->description ?> </p>
             <span class="date"><?= $row->created ?> </span>
             <a href="<?= $row->url ?>">View Tutorial</a>
             <span class="diff"><?= $row->difficulty ?></span>
             <span class="auth">Added by </span> 
          <?php 
         }
       }; // moved to the {} closing
       // test whether any valid rows have been found (set above)
       if(!$found){echo 'No results found';}
       ?>
      

      【讨论】:

      • 如果您觉得这个答案有用,请标记为答案
      【解决方案4】:

      你的条件必须是这样的:

      <?php 
          foreach($content as $row): ?>
            if($row->type == 'HTML')
            {
             <h2><?= $row->title ?></h2> 
             <span class="rating"> <?= $row->rating?>/5</span>
             <p class="desc"><?= $row->description ?> </p>
             <span class="date"><?= $row->created ?> </span>
             <a href="<?= $row->url ?>">View Tutorial</a>
             <span class="diff"><?= $row->difficulty ?></span>
             <span class="auth">Added by </span> 
           <?php } else {
               echo 'No results found';
            }
           ?>
        <?php   endforeach; ?>
      

      您的 foreach 条件应高于 if else 条件。

      【讨论】:

      • 感谢您的帮助,上面的人打败了您。
      猜你喜欢
      • 2021-10-05
      • 1970-01-01
      • 2012-10-31
      • 1970-01-01
      • 2018-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多