程序员初学者 - PHP循环不断重复相同的值

时间:2015-12-03 17:39:38

标签: foreach

刚开始学习如何编程并需要一些循环的基本帮助(尝试从在线资料中学习练习)。

在下面的代码中,我试图在10行中打印出值,然后在值的数量超过10之后生成一个新的表行。但是,我在混乱中使用我的循环,它只是连续打印出相同的值,而不会转到下一个值。

3 个答案:

答案 0 :(得分:0)

正如指南一样,如果您要混合使用此类代码和标记,您可能会考虑其他语法。

您的问题是您的输出循环位于获取行内部。获取行是应该触发计数器递增的内容。

$res = $handle->fetchAll();
?>
<table>
    <tr>
      <th>Ice Cream</th>
    <tr>
    <tr>  
 <?php
    $c = 0; // Our counter

    foreach($res as $row) {

    // Each Nth iteration would be a new table row

      if($c % 10 == 0 && $c != 0) // If $c is divisible by $n...
      {
        // New table row
        echo '</tr><tr>';
      }
      $c++;
      ?>
        <td>
          //etc.

答案 1 :(得分:0)

您正在循环中初始化迭代器变量($ c和$ n)。它们应该在循环之外初始化。

您应该使用while语句替换if循环。或者你可以完全取消它。

试试这个:

 <?php
   $c = 0; // Our counter
   $n = 10; // Each Nth iteration would be a new table row
 ?> 
 <?php foreach($res as $row): ?>
   <tr>  
   <?php 
   if($c % $n == 0 && $c != 0){ // If $c is divisible by $n... ?>
     //New table row
     echo '</tr><tr>';
   }
   $c++;
   ?>
   <td><form method="POST" action="Ice Cream Choice.php" <?php echo $row['IceCream']; ?>>         
   <input type="submit" name="submit" value="<?php echo $row['IceCream']; ?>"/>       
   </form>
   </td>
   </tr>
 <?php endforeach;  ?>

答案 2 :(得分:0)

我将简化HTML以使示例更清晰。这是编写程序的一种方法。

// Fetch the array of rows.
$res = $handle->fetchAll();

// Keep count of which row number we're on. The first
// row we will be on is row 1.
$rowCounter = 1;

// Everything in the block (between the braces) is done
// sequentially for each row in the result set.
foreach ($res as $row)
{
  // Print out the ice cream on a line.
  echo $row, '<br/>';

  // If we have reached a row which is a multiple of 2
  // then print a horizontal rule.
  if ($rowCounter % 2 == 0)
  {
    echo '<hr/>';
  }

  // Increase the row counter because we're about to
  // start the loop again for the next row.
  $rowCounter = $rowCounter + 1;
}

让我们假设:

$res = array('vanilla', 'chocolate', 'strawberry', 
             'raspberry', 'cherry');

现在让我们手动评估循环,看看发生了什么。为此,我们将维护一个变量和输出表。每一行都是循环的一次完整迭代。

$rowCounter | $row         | output
------------+--------------+------------
1           | --           | --
2           | 'vanilla'    | vanilla<br/>
3           | 'chocolate'  | vanilla<br/>chocolate<br/><hr/>
4           | 'strawberry' | vanilla<br/>chocolate<br/><hr/>strawberry<br/>
etc.