Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

php foreach as key, every two number as a group

Tags:

foreach

php

<?php
$data=array('1','2','3','4','5','6','7','8','9','10','11');
foreach($data as $key=> $element){
    if($key % 2 != 0){
        echo $element.'<br />';
    }
    echo '<hr />';
}
?>

php foreach as key, how to make every two number as a group?

I want to output:

1,2
_____
3,4
_____
5,6
_____
7,8
_____
9,10
_____
11
like image 347
fish man Avatar asked Jul 27 '11 23:07

fish man


2 Answers

Have a look at the array_chunk() function.

In your case you'd use it like this:

foreach(array_chunk($data, 2) as $values) {
    echo implode(',', $values)."\n";
}

During the last iteration $values will have only one element so if you plan to access the elements directly using their index remember to use count() to check the array's element count.

like image 165
ThiefMaster Avatar answered Oct 04 '22 06:10

ThiefMaster


Your foreach() is fine but you want to print every element, not just every even one. You also don't want the horizontal rule every time either, just every even. Thus:

<?php
$data=array('1','2','3','4','5','6','7','8','9','10','11');
foreach($data as $key=> $element){
    echo $element;
    if($key % 2 != 0){
        echo "<br/><hr />";
    }
    else {
        echo ",";
    }
}
?>
like image 45
Jon Lin Avatar answered Oct 04 '22 05:10

Jon Lin