2012-03-26 19 views
-4

I haben die folgende Schleife ...Schleife innerhalb der Schleife verursacht unerwünschte Ausgang

for ($i = 1; $i <= 10; $i++) { 
    echo '<span class="srch-val-'.$i.'">'.apply_filters(" $value\n", $value)."</span>"; 
} 

innerhalb ...

while ($query->have_posts()) : $query->the_post(); 
if ($keys = get_post_custom_keys()) { 
    echo "<div class='clearfix card-prod ".($i==0?'first':'')."'><span class='card-title'>"; 
    echo the_title(); 
    echo "</span>"; 

    foreach ((array) $keys as $key) { 
    $keyt = trim($key); 
    if ('_' == $keyt{0} || 'pricing' == $keyt || 'vehicleType' == $keyt || 'coverageRegion' == $keyt || 'locationType' == $keyt) 
     continue; 
    $values = array_map('trim', get_post_custom_values($key)); 
    $value = implode($values,', '); 
    for ($i = 1; $i <= 10; $i++) { 
       echo '<span class="srch-val-'.$i.'">'.apply_filters(" $value\n", $value)."</span>"; 
      } 

    } 
    echo "\n"; echo '<img src="wp-content/themes/cafc/images/top-choice.jpg" alt="Top Choice" class="topchoice">';echo '<img src="wp-content/themes/cafc/images/cards/dummy.png" />';  echo the_excerpt()."</div>";} 
    $i++; 

endwhile;

Wenn ich meinen Code jedoch auszuführen, sagen meine while() Schleife 4 Werte zurückgibt, meine for() Schleife gibt dann 10 von der gleichen Sache, in meinem Browser seine wie gezeigt ...

enter image description here

Alles, was ich tun möchte, ist für jeden <span class="srch-val'> ist eine Zahl nach jeder 'srch-val' Klasse hinzuzufügen, so srch-val-1, srch-val-2 etc ...

+1

"für jeden", was? – bfavaretto

+0

Können Sie ein Beispiel für die gewünschte Ausgabe angeben? Es ist offensichtlich, dass die for-Schleife 10-mal dieselbe Ausgabe druckt, weil sich der Wert von $ nicht ändert. – flo

+0

Meinst du Kostenlose Einrichtung? –

Antwort

2

Sie haben eine extra Schleife in Ihrer foreach-Schleife. Entfernen Sie diese Schleife und führen Sie das Echo direkt in der foreach-Schleife aus und erhöhen Sie jedes Mal, wenn Sie es tatsächlich verwenden, um $i.

So:

$i = 1; 
while ($query->have_posts()) 
{ 
    $query->the_post(); 
    if ($keys = get_post_custom_keys()) 
    { 
     echo "<div class='clearfix card-prod ".($i==0?'first':'')."'><span class='card-title'>"; 
     echo the_title(); 
     echo "</span>"; 

     foreach ((array) $keys as $key) 
     { 
      $keyt = trim($key); 
      if ('_' == $keyt{0} || 'pricing' == $keyt || 'vehicleType' == $keyt || 'coverageRegion' == $keyt || 'locationType' == $keyt) 
       continue; 
      $values = array_map('trim', get_post_custom_values($key)); 
      $value = implode($values,', '); 

      echo '<span class="srch-val-'.$i.'">'.apply_filters(" $value\n", $value)."</span>"; 
      $i++; // move the incrementer here so that you only increment when you actually use it. 
     } 

     echo "\n"; echo '<img src="wp-content/themes/cafc/images/top-choice.jpg" alt="Top Choice" class="topchoice">';echo '<img src="wp-content/themes/cafc/images/cards/dummy.png" />';  echo the_excerpt()."</div>"; 
    } 
} 
0

Sie erstellen eine Variable an der Anfang Ihrer foreach-Schleife (zB $counter == 1;)

als Ihre For-Schleife sollte sein:

for($i = $counter; $i <= $counter+10; $i++){ 
    //do your span-class thing here 
} 

Und am Ende der foreach-Schleife zu tun: $counter += 10;

Verwandte Themen