2016-04-15 5 views
1

Ich habe ein Array mit 6 verschiedenen Farben in es wie folgt aus:PHP make Array auf 0 zurück, als letzten Punkt erreicht

$colors = array(
     'dd0330', 
     'e49fca', 
     'a776a6', 
     'f7e300', 
     'f78f1e', 
     'd12a2f', 
); 

Und ich habe eine Schleife, wo ich speichern ein paar Sachen in einem Array, ich hinzufügen für jedes Element eine Farbe. Aber das Array kann mehr Elemente haben als 6 so, wenn die sechste Farbe I der Zähler wollen wird begabt heraus sein zurückgesetzt

Dies ist, was ich versucht habe:

$loop_counter = 0; 
if ($orders->have_posts()){ 
    while ($orders->have_posts()) : $orders->the_post(); 
     ... 
     $myOrders[] = array('name' => $name, 
           'schedule' => $activiteiten, 
           'link' => $link, 
           'color' => $colors[$loop_counter], 
           'catering' => $catering, 
           ); 
     ... 
     if($loop_counter = 5){ 
      $loop_counter = 0; 
     } 
     $loop_counter++; 
    endwhile; 
} 

Aber das scheint zu geben, meine erster Gegenstand die erste Farbe und alles andere der zweite.

Wer weiß, wie ich meinen Zähler zurücksetzen kann?

Vielen Dank im Voraus!

+2

Verwenden Sie double == in Bedingung zB: if ($ loop_counter == 5). – RJParikh

+0

mit "endwhile;" sieht so hässlich aus ... Warum benutzt du nicht '{}'? – Random

Antwort

10

So nah!

if($loop_counter == 5) 

Sie benötigen auch eine Äquivalenzbeziehung, nicht ein Gleichheits

Versuchen Sie, wenn Sie Ihre $ loop_counter ++ nach dem ob, haben werden Ihre wenn sollte $ loop_counter = -1 gesetzt .

+0

Wauw Ich fühle mich so dumm wegen dem '==' haha. Ich habe meine '$ loop_counter ++' über meiner platziert, wenn wir alle gut sind! Vielen Dank! –

+0

Gut gut! Froh, dass ich helfen konnte! –

2

Anstatt den maximalen Wert in Ihre if-Anweisung fest zu codieren, können Sie eine ArrayIterator, z.

$it = new ArrayIterator($colors); 
if ($orders->have_posts()){ 
    while ($orders->have_posts()) : $orders->the_post(); 
     //... 
     if(!$it->valid()){ 
      $it->rewind(); 
     } 
     $myOrders[] = array('name' => $name, 
           'schedule' => $activiteiten, 
           'link' => $link, 
           'color' => $it->current(), 
           'catering' => $catering, 
           ); 
     //... 
     $it->next(); 
    endwhile; 
} 
+0

Das funktioniert auch und ist viel sauberer. Aber die Menge an Farben ist festgelegt. Trotzdem danke! –

3

Sie können es besser machen.

$myOrders[] = array('name' => $name, 
          'schedule' => $activiteiten, 
          'link' => $link, 
          'color' => $colors[$loop_counter % 6], 
          'catering' => $catering, 
          ); 

% gibt Ihnen einen Rest, und Sie müssen nie den Zähler prüfen und zurückgesetzt.

Wenn die Anzahl der Farben geändert werden kann, verwenden

$colors_num = count($colors); 
// ... 
          'color' => $colors[$loop_counter % $colors_num], 
// ... 
1
 $loop_counter++; 
if($loop_counter == 6){ 
       $loop_counter = 0; 
      } 

diese reset()

1

PHP-Array-Funktion versuchen können zu diesem Zweck gewidmet ist.

if ($loop_counter == 6) { 
reset($colors); 
} 

Dadurch wird Ihr Array-Zeiger auf das erste Element zurückgesetzt.