PHP -将foreach循环重写为for循环,以具有计数器


PHP - Rewrite foreach loop as a for loop to have a counter

我正试图将两个foreach循环重写为for循环,以便我能够在3处停止它们。下面是第一个简单循环的原始代码:

<?php foreach ($marketing[0]['values'] as $company) { ?>
            <tr>
              <td><?php echo $company['label']; ?></td>
              <td><?php echo $company['value']; ?></td>
            </tr>
          <?php } ?>

这是我尝试重写的:

 <?php 
        for($i = 0; $i < 4; ++$i) { 
        $company = $marketing[0][$i]['values']; 
      ?>
        <tr>
          <td><?php echo $company['label']; ?></td>
          <td><?php echo $company['value']; ?></td>
        </tr>            
      <?php } ?>

这是第二个稍微复杂一点的foreach循环,我还没有尝试过。

<?php foreach ($sales as $sale) { ?>
          <tr>
            <td><?php echo $sale['key']; ?></td>
            <td>
              <?php 
                foreach ($sale['values'] as $values) {
                  if ($values['x'] == $currentTeam) {
                    echo $values['y'];
                  }
                }                 
              ?>
            </td>
          </tr>
          <?php } ?>

你总是可以使用break。http://php.net/manual/en/control-structures.break.php

<?php $counter = 0; ?>
<?php foreach ($marketing[0]['values'] as $company) { ?>
    <?php if ($counter == $maxLimit) break; ?>
    <tr>
        <td><?php echo $company['label']; ?></td>
        <td><?php echo $company['value']; ?></td>
    </tr>
    <?php $counter++; ?>
<?php } ?>

你已经快到那里了

<?php 
  $maxLimit = 3; //you could get maxlimit from elsewhere rather than hardcoding it
  //use count() to get the length of an array in PHP
  for($i = 0; $i < count($marketing[0]); ++$i) 
  { 
    $company = $marketing[0][$i]['values']; 
    if($i > $maxLimit) break;
  ?>
    <tr>
      <td><?php echo $company['label']; ?></td>
      <td><?php echo $company['value']; ?></td>
    </tr>            
  <?php } ?>

作为一种替代方法,您可以在

一侧引入一个反字段。
      <?php 
          $salesCounter = 0;
          $maxSalesCounter = 3;
          foreach ($sales as $sale) 
          { 
      ?>
      <tr>
        <td><?php echo $sale['key']; ?></td>
        <td>
          <?php 
            foreach ($sale['values'] as $values) 
            {
              if($salesCounter > maxSalesCounter) break;
              if ($values['x'] == $currentTeam) 
              {
                echo $values['y'];
                $salesCounter++;
              }
            }                 
          ?>
        </td>
      </tr>
      <?php } ?>