【问题标题】:PHP Loop do some once the loop as finishedPHP Loop 在循环完成后执行一些操作
【发布时间】:2010-01-21 13:15:29
【问题描述】:

我有这个 PHP 循环,

foreach($returnedContent as $k => $v) {
    $imageName = str_replace($replaceData, "", $v['contentImageName']);
    echo "<a class='contentLink' href='".base_url()."welcome/getFullContent/$v[contentId]'>";
    echo "<img src='/media/uploads/".strtolower($v['categoryTitle'])."/".$imageName."_thumb.png' alt='$v[contentTitle]' />";
    echo "</a>";
}

一旦 lopp 完成,我希望可以循环打印 x 数量的灰色框这是可能的,如果可以的话,基本上如果第一个循环返回 1 个项目,我需要第二个循环打印出 11盒子,如果第一个返回 9 个项目,我需要第二个循环返回 3 个盒子。

有意义吗?谁能帮帮我?

【问题讨论】:

    标签: php foreach loops


    【解决方案1】:

    所以如果你想要总共 12 个盒子,设置一个计数器并减量:

    $boxes = 12;
    foreach($returnedContent as $k =>$v){
       // all your previous stuff
       $boxes--;
    }
    
    for($i = 0; $i < $boxes; $i++){
       // print your box here
    }
    

    根据您的应用程序,您可能还需要检查 $returnContent 中的项目数是否

    【讨论】:

      【解决方案2】:

      只需保留一个计数器并在每次循环迭代时将其递增,然后添加

      for (;$counter < 11; ++$counter) {
          do_loop_stuff();
      }
      

      【讨论】:

      • 我会使用 count($returnedContent) 而不是变量。另外,真的可以用; 开始一个for循环吗?我从来没有见过这个。
      • @Robin,我敢打赌你没见过for(;;),这也是相当合法的:)
      【解决方案3】:

      也许你可以这样做(假设 $returnedContent 是数字索引的):

      //count to 12 so we get 12 items
      for ($i=0; $i<12; $i++) {
          //check if there is an entry to print
          if (isset($returnedContent[$i])) {
              $v = $returnedContent[$i];
              $imageName = str_replace($replaceData, "", $v['contentImageName']);
              echo "<a class='contentLink' href='".base_url()."welcome/getFullContent/$v[contentId]'>";
              echo "<img src='/media/uploads/".strtolower($v['categoryTitle'])."/".$imageName."_thumb.png' alt='$v[contentTitle]' />";
              echo "</a>";
          } else {
              //draw grey box
          }
      }
      

      【讨论】:

        【解决方案4】:

        在第一个循环之后,你可以这样做:

        for($i = 0; $i < 12 - count($returnedContent); $i++)
        {
         // print the grey boxes.
        }
        

        【讨论】:

          【解决方案5】:

          嗯,我不确定我是否理解你,但是

          $c = count($returnedContent);
          

          将为您提供变量中的项目数量

          然后:

          $c = (11-$c);
          if($c > 0) {
              for($i=0;$i<$c;$i++) {
                // print gray box
              }
          }
          

          在第一个循环之后。您也可以在第一个循环中使用计数器变量。

          【讨论】:

            【解决方案6】:

            我确实将问题解释为“循环完成迭代后做某事”。 在这种情况下,for/foreach 循环不是这里的最佳选择。 怎么样

            <?php
            $i = 0;
            do {
                echo $i;
            } while ($i > 0);
            //then do whatever else you need to.
            ?>
            

            【讨论】:

              猜你喜欢
              • 2023-04-11
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2015-03-04
              • 1970-01-01
              • 2019-05-17
              • 1970-01-01
              相关资源
              最近更新 更多