显示每个foreach索引的不同值

时间:2015-05-05 14:38:41

标签: php if-statement foreach

我有css课程,我不想添加到每个li标签中。它应该添加到一个li中,然后li应该是空的等等......

我尝试添加

例如

<?php 

 $css_class = 'class="pull_rigt"';

 echo "<ul>";
 foreach($posts as $key => $value ) {

   echo "<li $css_class>";
    echo $value['data'];
   echo "</li>";

}
echo "<ul>";
?>

输出应为

<li class="pull_rigt">
    data
<li>
<li>
    data
</li>

我尝试在每个foreach索引中匹配两个数字的幂,但无法计算出数学。

<?php 

 $css_class = 'class="pull_rigt"';

 echo "<ul>";

 $i = 0;
 foreach($posts as $key => $value ) {

   <li <?php echo ($i & ($i - 1)) == 0 ? $css_class; ?>

    echo $value['data'];

   echo "</li>";

   $i++;
}
echo "<ul>";
?>

3 个答案:

答案 0 :(得分:3)

如果你的li一个接一个地出现,你不一定要添加一个类来应用这种公式样式,你可以根据它们是odd还是{{1来设置它们的样式使用以下CSS:

even

li:nth-of-type(odd){}

示例代码:

&#13;
&#13;
li:nth-of-type(even){}
&#13;
li:nth-of-type(odd) {
  color: red;
}
&#13;
&#13;
&#13;

答案 1 :(得分:3)

最简单的解决方案可能是使用nth-child selector,因此您根本不需要使用任何类。

或者,在PHP中使用%运算符 - 它表示“除以某个数字后的余数”。 foreach循环可能如下所示:

foreach ($posts as $key=>$value) {

    echo "<li"
    if ($key % 2 == 1) { // For $key 1, 3, 5, 7...
        echo " ".$css_class; 
    }
    echo ">";

    echo $value["data"];

    echo "</li>";
}

使用不同的操作数来获得不同的结果,即$key % 3 == 2对于$ key 2,5,8等是真实的。

答案 2 :(得分:1)

我使用模数运算符%来做这些事情。

http://php.net/language.operators.arithmetic

对于简单的偶数/奇数评估:

偶: $num % 2 == 0

奇怪: $num % 2 == 1

以下是基于您的代码的独立示例:

<?php 
// Test Data
$posts = array();
for ($i = 0; $i < 10; $i++) {
    $posts[] = array('data' => $i);
}
echo '
<style type="text/css">
.pull_rigt {
    color: red;
}
</style>';

// UL
echo "<ul>";
$i = 0;
foreach($posts as $key => $value ) {
    $class = ($i % 2 == 0) ? ' class="pull_rigt"' : ''; // Even Numbers
    #$class = ($i % 2 == 1) ? ' class="pull_rigt"' : ''; // Odd Numbers
    echo "<li{$class}>";
    echo $value['data'];
    echo "</li>";
    $i++;
}
echo "<ul>";
?>

您可以在此处看到它:http://viper-7.com/t0jUn1