Reputation: 437
I have an users list, each user is wrapped by a div, this way
<div class="users">
<div>user 1 content</div>
<div>user 2 content</div>
<div>user 3 content</div>
<div>user 4 content</div>...
</div>
then all are displayed this way:
1 2 3
4 5 6
7 8 9
10 11 12
13 14 15
...... and so on
divs numbers 1,4,7,10.. should have a class called class_left for instance, divs numbers 2,5,8,11,14.. should have a class called class_center and divs numbers 3,6,9,12,15... should have a class called class_right
I am not quite sure how to do it. Thank you.
Upvotes: 0
Views: 1480
Reputation: 1998
This code works for any number of div
elements per row. (If you set $divsPerRow
to 2, class_center
will not be used. If you set it to 1, neither will 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;
Upvotes: 0
Reputation: 3350
Try this:
$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>";
}
Or if you want a function that will take the number and return the class name you should try something like:
function getClass($num) {
if (!$num % 3) {
return 'class_right';
}
if (!($num + 1) % 3) {
return 'class_center';
}
if (!($num + 2) % 3) {
return 'class_left'
}
}
Upvotes: 0
Reputation: 14921
Suppose that $data
is your array of 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>
Upvotes: 1
Reputation: 1411
Maybe try this way:
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;
}
}
This is only javascript example. Please use your language.
Upvotes: 0
Reputation: 1066
I don't know how you're using your code, but you can use modulus operator in this way: if column number modulus 3 is 1 then you're on the left, else if the result is 2 you're on the center, else with result equal 0, you're on the right.
Upvotes: 1
Reputation: 9268
You can simply do this by using modulus
operator with 3.
Here is a pseudo code:
if(div_number % 3 ==1)
class = class_left;
else if(div_number % 3 == 2)
class = class_center;
else
class=class_right;
Upvotes: 1