2016-08-10 105 views
-1

我有一個用戶列表,每個用戶由一個div包裹,這樣添加類foreach循環每N次

<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 

的div數1,4,7,10 ..應該有一個叫做class_left的實例類, 的div數2,5,8,11,14 ..應該有一個類中調用class_center和 的div數3,6,9,12,15- ...應該有一個叫class_right

我不太清楚如何做到這一點的類。 謝謝。

+3

告訴我們您正在使用 –

+2

代碼如果有3個div的,你應該只使用'%3'並查看餘數是否爲'0','1'或'2'。 – 4castle

回答

1

你可以簡單地通過使用modulus運營商,3

這裏做,這是一個僞代碼:

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

謝謝你的傢伙。 – Luis

-1

什麼是你尋找的是:

(i-1)%3 == 0 
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' 
    } 

} 
1

我不知道你是如何使用你的代碼,但是你可以使用模運算符這樣:如果列數模數3是1,那麼你在左邊,否則如果結果是2你在中心,否則結果等於0,你在右邊。

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的例子。請使用你的語言。

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> 
0

此代碼適用於任何數量的每行div元素。 (如果設置$divsPerRow 2,class_center將不會被使用。如果你將它設置爲1,都不會對class_right。)

$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;