php
  • foreach
  • loops
  • 2010-01-21 11 views 1 likes 
    1

    Je cette boucle PHP,PHP boucle faire une fois la boucle comme terminée

    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>"; 
    } 
    

    Une fois que le LOPP a fini, j'espérais qu'il serait possible de faire la boucle pour imprimer quantité x de boîtes grises est-ce possible et si oui comment, fondamentalement, si la première boucle renvoie 1 élément j'ai besoin de la deuxième boucle pour imprimer 11 boîtes, si le premier renvoie 9 articles, j'ai besoin de la deuxième boucle pour retourner 3 boîtes.

    Avez-vous du sens? Quelqu'un peut-il m'aider?

    Répondre

    0

    Il suffit de garder un compteur et incrémente pour chaque itération de boucle, puis ajouter

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

    J'utiliser 'count ($ returnsContent)' au lieu de variable. Aussi, est-il vraiment possible de lancer une boucle for avec un ';'? Je n'ai jamais vu ça. – Robin

    +1

    @Robin, je parie que vous n'avez pas vu 'for (;;)', ce qui est tout à fait légal :) – vava

    0

    Peut-être que vous pourriez faire quelque chose comme ça (en supposant returnedContent $ est indexé numériquement):

    //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

    Après la première boucle, vous pouvez faire:

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

    Donc si vous voulez un total de 1 2 boîtes, définissez un compteur et décrémenter:

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

    En fonction de votre application, vous pouvez également vérifier que le nombre d'articles en $ returnContent est < = boîtes $. Si elle est supérieure à $ boxes, vous n'obtiendrez pas d'erreur mais vous obtiendrez des lignes avec plus de $ boxes images.

    0

    Hmmm je ne suis pas sûr Im vous comprendre, mais

    $c = count($returnedContent); 
    

    vous obtiendrez la quantité d'articles dans la variable

    alors:

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

    après la première boucle. Vous pouvez également utiliser une variable de compteur à l'intérieur de la première boucle.

    0

    J'ai interprété la question comme "Faire quelque chose quand la boucle a fini d'itérer". Dans ce cas, une boucle for/foreach n'est pas le meilleur choix ici. comment sur

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