ForEach loop: Output something different on every second result
13,979
You can create a "counting" variable, and then use the result of $count % 2
to determine if it is an odd or even row:
$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:
}
}
Author by
Wade D Ouellet
Updated on June 04, 2022Comments
-
Wade D Ouellet almost 2 years
I have two for each loops and I am trying to output something different for each second result:
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>'; }
For this one I want it to echo
<li class="even">
instead of just<li>
for each second result. I think this will have to be changed to a for loop to accomplished this but I am not sure how that is done without breaking it.Exact same for this one:
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 }
Thanks,
Wade