2016-09-11 5 views
1

Angenommen, ich habe eine externe Quelle, von der ich Daten sammle und sie in Listenform lege. Diese externe Quelle kann zwischen 1 und 100 Einträge enthalten. Lassen Sie uns rand() und range() verwenden, um dies darzustellen. (mindestens 1 ist, und eine Zufallszahl zwischen 1 und 15, wie unsere total 'Einträge')Foreach-Bereich mit leeren Listeneinträgen

<?php 
$max = rand(1, 15); 
$range = range(1, $max); 
?> 
     <ul> 
<?php 
foreach ($range as $number) { 
echo '<li>' . $number . '</li>'; 
} 
?> 
     </ul> 

dies aus den Echo wie folgt aus:

lassen Sie uns jetzt sagen, dass ichwollenimmer insgesamt 10 mal aussprechen.

Auch wenn meine Liste ($number) als 1 so niedrig ist, oder so hoch wie 15.

Wenn es 1 ist, ist es der erste Eintrag angezeigt wird, und dann 9 leer <li></li> (eigentlich ist es in meinem Code gewonnen ‚t leer sein, aber meine eigenen bestimmten Text innerhalb haben. wie zum Beispiel <li>Blank Entry</li>

Wenn es 15 ist, ist es die ersten 10 Einträge angezeigt wird, und schneidet den letzten 5.

ich, wie ich das einstellen könnte Bereich in meiner foreach zu stoppen nach 10 Iterationen im letzteren Beispiel, aber wie ich die leereberücksichtigenEinträge in der ehemaligen?

+0

Sie könnten eine for-Schleife verwenden und prüfen, ob Sie noch ein Array-Element haben oder nicht – Rizier123

Antwort

1

Nicht sicher, warum dies dinged war ... einfach ein anderes Array erstellen und dieses Array mit Ihren zufälligen Werten füllen. Das andere Array akzeptiert diese Werte bis zu 10, und wenn das ursprüngliche Array weniger als 10 Werte hat, füllt es es mit 'leer'.

<?php 
    $max = rand(1, 15); 
    $range = range(1, $max); 
    $arr = []; 

    for($i=0; $i<=9; $i++){ 
     if(isset($range[$i])){ 
     $arr[] = $range[$i]; 
     }else{ 
     $arr[] = 'blank'; 
     } 
    } 
    ?> 
    <ul> 
    <?php 
    foreach ($arr as $number) { 
     echo '<li>' . $number . '</li>'; 
    } 
    ?> 
    </ul> 
+0

Danke für die Antwort. Ich habe dich nicht -1, aber ich habe diesen Code ausprobiert und einen Fehler erhalten. Wenn Sie nachsehen, haben Sie nach '$ arr [] = 'blank' ein'} 'vergessen.' End 'für ($ i = 0; $ i <= 9; $ i ++) {'Nach diesem Fix scheint es zu funktionieren wie erwartet. Geben Sie mir ein wenig, um meinen Kopf um den Code zu wickeln, und ich werde akzeptieren, wenn es richtig ist (und wenn jemand erklären will, warum sie es auch läuten) – bbruman

+0

yep - fatfingered kopieren/einfügen. } hinzugefügt... – Craig