PHP循环在循环完成后执行一些操作

时间:2010-01-21 13:15:30

标签: php foreach loops

我有这个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个框。

有意义吗?任何人都可以帮助我吗?

6 个答案:

答案 0 :(得分:2)

因此,如果你想要总共12个盒子,设置一个计数器并减少:

$boxes = 12;
foreach($returnedContent as $k =>$v){
   // all your previous stuff
   $boxes--;
}

for($i = 0; $i < $boxes; $i++){
   // print your box here
}

根据您的应用程序,您可能还需要检查$ returnContent中的项目数是否为&lt; = $ boxes。如果它大于$ box,你将不会收到错误,但你会得到超过$ box图像的行。

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

也许你可以做这样的事情(假设$ 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
    }
}

答案 3 :(得分:0)

在第一个循环之后,您可以执行以下操作:

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

答案 4 :(得分:0)

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

$c = count($returnedContent);

将为您提供变量

中的项目数量

然后:

$c = (11-$c);
if($c > 0) {
    for($i=0;$i<$c;$i++) {
      // print gray box
    }
}
第一次循环后

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

答案 5 :(得分:0)

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

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