-->

How can I make this PHP lines shorter?

2019-02-28 14:41发布

问题:

I have this loop at the same it will count the output:

while ($wp_query->have_posts()) : $wp_query->the_post(); $current++; $current2++;

Then to call the proper html class I need this for my design:

<div class="span4 <?php if($current == 0) { echo 'first'; } elseif($current == 1) { echo 'second'; } elseif($current == 2) { echo 'first'; } elseif($current == 3) { echo 'second'; } ?>" id="<? echo $current; ?>">

The $count starts from 0 and $count2 from 1. The output should be like this: if 0=first, 1=second, 2=first, 3=second and so forth. How can I make this expression shorter with unlimited number of $count? I hope my question is clear. Thank you for those who will help me here.

回答1:

If I understand what you are asking here, I think you want to alternate your divs with'first' and 'second' classes?

As such, you can use the % modulo operator (see http://php.net/manual/en/internals2.opcodes.mod.php)

<div class="span4 <?php echo ($current % 2 === 0 ? 'first' : 'second'); ?>" id="<? echo $current; ?>">


回答2:

If you are just using these class names for alternating CSS styles there is a much elegant way to do this using CSS3

Your HTML

<div class="span4" id="<? echo $current; ?>">

And in your css file

.span4:nth-child(even) {background: #CCC}
.span4:nth-child(odd) {background: #FFF}

else for a PHP solution the answer by Liam Wiltshire should work good.

source: CSS even and odd rules examples



回答3:

So you could use mod - best to use the full<?php tag for WordPress if that is what it is.

php test if number is odd or even

    // set up the html clips
    if($current % 2 == 0){
    $html_clips = 'first'; 
    }else{
    $html_clips = 'second'; 
    }
    if($current == 0) $html_clips = 'first';
    <div class="span4 <?php echo $html_clips ?>" id="<?php echo $current; ?>">


回答4:

try this way

<div class="span4 
 <?php if ($curent%2 == 0){ echo 'first'; } 
  else {echo 'second';}?> id="<? echo $current; ?>">