PHP Loop сделать один раз, когда цикл завершен - PullRequest
1 голос
/ 21 января 2010

У меня есть этот цикл 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 элемент, мне нужен второй цикл для печати ящики, если первый возвращает 9 элементов, мне нужен второй цикл, чтобы вернуть 3 ящика.

Имеет смысл? Кто-нибудь может мне помочь?

Ответы [ 6 ]

2 голосов
/ 21 января 2010

Итак, если вы хотите всего 12 блоков, установите счетчик и уменьшите значение:

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

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

В зависимости от вашего приложения вы также можете проверить, что количество элементов в $ returnContent составляет <= $ ящиков. Если оно больше, чем $ коробки, вы не получите сообщение об ошибке, но вы получите строки с изображениями более чем $ коробки. </p>

0 голосов
/ 11 июня 2014

Я интерпретировал вопрос как «Сделайте что-нибудь, когда цикл завершит итерацию». В этом случае цикл for / foreach не лучший выбор. как насчет

<?php
$i = 0;
do {
    echo $i;
} while ($i > 0);
//then do whatever else you need to.
?>
0 голосов
/ 21 января 2010

Хммм, я не уверен, что понимаю вас, но

$c = count($returnedContent);

даст вам количество предметов в переменной

, то:

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

после первого цикла. Вы также можете использовать переменную counter внутри первого цикла.

0 голосов
/ 21 января 2010

После первого цикла вы можете сделать:

for($i = 0; $i < 12 - count($returnedContent); $i++)
{
 // print the grey boxes.
}
0 голосов
/ 21 января 2010

Может быть, вы могли бы сделать что-то вроде этого (предполагая, что $ 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
    }
}
0 голосов
/ 21 января 2010

Просто держите счетчик и увеличивайте его для каждой итерации цикла, затем добавьте

for (;$counter < 11; ++$counter) {
    do_loop_stuff();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...