每N次向foreach循环添加一个类

时间:2016-08-10 21:50:42

标签: php html

我有一个用户列表,每个用户都用div包装,这样

<div class="users">
    <div>user 1 content</div>
    <div>user 2 content</div>
    <div>user 3 content</div>
    <div>user 4 content</div>...
</div>

然后所有这些都以这种方式显示:

1 2 3
4 5 6
7 8 9
10 11 12
13 14 15
...... and so on

divs数字 1,4,7,10 .. 应该有一个名为 class_left 的类,例如 div数 2,5,8,11,14 .. 应该有一个名为 class_center 的类, divs数字 3,6,9,12,15 ...... 应该有一个名为 class_right 的类

我不太清楚该怎么做。 谢谢。

7 个答案:

答案 0 :(得分:1)

您只需使用modulus运算符3即可完成此操作。

这是一个伪代码:

if(div_number % 3 ==1)
   class = class_left;
else if(div_number % 3 == 2)
   class = class_center;
else
   class=class_right;

答案 1 :(得分:1)

我不知道你是如何使用你的代码的,但你可以用这种方式使用模数运算符:如果列号模数3是1那么你在左边,否则如果结果是2你就是在中心,否则结果等于0,你就在右边。

答案 2 :(得分:1)

假设$data是您的数据数组:

<?php $aligns = array('right', 'left', 'center'); ?>

<div class="users">
    <?php foreach($data as $key => $value): ?>
        <div class="class_<?php echo $aligns[$key % 3]; ?>">
            <?php var_dump($value); ?> // User X's Content          
        </div>
    <?php endforeach; ?>
</div>

答案 3 :(得分:0)

试试这个:

$i = 1;
$last = 100;

for ($i =1; $i<$last; $i=+3) {
    echo "<div class='class_left'>user ".$i." content</div>";
    echo "<div class='class_center'>user ".($i+1)." content</div>";
    echo "<div class='class_right'>user ".($i+2)." content</div>";
}  

或者如果你想要一个能取数字并返回类名的函数,你应该尝试类似的东西:

    function getClass($num) {
    if (!$num % 3) {
        return 'class_right';
    }

    if (!($num + 1) % 3) {
        return 'class_center';
    }

    if (!($num + 2) % 3) {
        return 'class_left'
    }

}

答案 4 :(得分:0)

也许这样试试:

var curr = 0;
users.forEach(user){
      curr++;
      switch(curr){
        case 1:
          user.class = 'class_left';
        case 2:
          user.class = 'class_center';
        case 3:
          user.class = 'class_right';
          curr = 0;
      }
}

这只是一个javascript示例。请使用您的语言。

答案 5 :(得分:0)

此代码适用于每行任意数量的div个元素。 (如果您将$divsPerRow设置为2,则不会使用class_center。如果将其设置为1,则class_right也不会。{/ p>

$divsPerRow = 3;
$users = range(1, $divsPerRow * 3);

echo '<div class="users">' . PHP_EOL;
for ($i = 0; $i < count($users); $i++) {
    $class = "left";
    $column = $i % $divsPerRow + 1;
    if ($column > 1) {
        $class = ($column == $divsPerRow) ? "right" : "center";
    }
    echo '<div class="class_' . $class . '">user ' . $users[$i]
        . ' content</div>' . PHP_EOL;
}
echo '</div>' . PHP_EOL;

答案 6 :(得分:-1)

您在寻找的是:

(i-1)%3 == 0