2010-05-24 9 views
2

J'ai deux pour chaque boucle et je suis en train de sortie quelque chose de différent pour chaque second résultat:boucle ForEach: sortie quelque chose de différent sur chaque deuxième résultat

foreach ($wppost as $wp) { 
      $wp_title = $wp->post_title; 
      $wp_date = strtotime($wp->post_date); 
      $wp_slug = $wp->post_name; 
      $wp_id = $wp->ID; 
      // Start Permalink Template 
      $wp_showurl = $wp_url; 
      $wp_showurl = str_replace("%year%", date('Y', $wp_date), $wp_showurl); 
      $wp_showurl = str_replace("%monthnum%", date('m', $wp_date), $wp_showurl); 
      $wp_showurl = str_replace("%day%", date('d', $wp_date), $wp_showurl); 
      $wp_showurl = str_replace("%hour%", date('H', $wp_date), $wp_showurl); 
      $wp_showurl = str_replace("%minute%", date('i', $wp_date), $wp_showurl); 
      $wp_showurl = str_replace("%second%", date('s', $wp_date), $wp_showurl); 
      $wp_showurl = str_replace("%postname%", $wp_slug, $wp_showurl); 
      $wp_showurl = str_replace("%post_id%", $wp_id, $wp_showurl); 
      // Stop Permalink Template 
      $wp_posturl = $blog_address . $wp_showurl; 
      echo '<li><a href="'.$wp_posturl.'" title="'.$wp_title.'">'.$wp_title.'</a></li>';   
     } 

Ce que je veux faire écho <li class="even"> au lieu de juste <li> pour chaque deuxième résultat. Je pense que cela devra être changé en boucle for pour accomplir ceci mais je ne suis pas sûr comment cela se fait sans le casser.

exacte même pour celui-ci:

if(is_array($commenters)) { 
     foreach ($commenters as $k) { 
     ?><li><?php 
      if($ns_options["make_links"] == 1) { 
      $url = ns_get_user_url($k->poster_id); 
      if(trim($url) != '') 
      { 
       echo "<a href='" . $url . "'>"; 
      } 
      } 
      if($ns_options["make_links"] == 2) { 
      $url = ns_get_user_profile($k->poster_id); 
      echo "<a href='" . $url . "'>"; 
      } 


      $name = $bbdb->get_var(" 
     SELECT user_login 
     FROM $bbdb->users 
     WHERE ID = $k->poster_id"); 
     echo ns_substr_ellipse($name, $ns_options["name_limit"]); 

      if(trim($url) != '' && $ns_options["make_links"] == 1) { 
      echo "</a>"; 
      } 
      if($ns_options["make_links"] == 2) { 
      echo "</a>"; 
      } 
      if ($ns_options["show_posts"] == 1) 
      { 
      echo " (" . $k->num_posts . ")\n"; 
      } 
      echo $ns_options["end_html"] . "\n"; 
      unset($url); 
     } 
    } else { 
     ?></li><?php 
    } 

Merci,

Wade

Répondre

5

Vous pouvez créer une variable "comptage", puis utiliser le résultat de $count % 2 pour déterminer si elle est rangée impaire ou rangée:

$rowCount = 0; 
foreach ($wppost as $wp) { 
    // stripping stuff: 
    echo '<li'; 
    // increase $rowCount - if the remainder of a division by 2 is 1, echo extra class info: 
    if ($rowCount++ % 2 == 1) echo ' class="even"'; 
    echo '><a href="'.$wp_posturl.'" title="'.$wp_title.'">'.$wp_title.'</a></li>';   
} 


if(is_array($commenters)) { 
    $commentCount = 0; 
    foreach ($commenters as $k) { 
    ?><li<?php echo ($commentCount++%2==1)?' class="even"':''?>><?php 
    //stripped the rest of the loop: 
    } 
} 
+0

Parfait, merci! –