Naveen Gamage
Naveen Gamage

Reputation: 1884

Get array elements 3 by 3 using foreach

I've an array that contains data taken by splitting a string.

Mike,20,male,Ann,28,female,chuck,45,male

$people = explode(',', $result);

how can I assign these data in the array 3 by 3 into 3 different variables using foreach?

    Mike 20 male

    and then 

    Ann 28 female

    then 

    chuck 45 male

Upvotes: 4

Views: 87

Answers (3)

dave
dave

Reputation: 64657

foreach(array_chunk(explode(',', $result), 3) as $row) {
  list($name, $age, $gender) = $row;
}

actually, even better:

foreach(array_chunk(explode(',', $result), 3) as list($name, $age, $gender)) {

}

Upvotes: 5

Milad
Milad

Reputation: 28592

$data = array("mike","20","male","Milaf","21","male","Ava","22","female");
$names = array();
for($i=0 ; $i<9 ; $i+=3){
$names[] = $data[$i];
}
foreach($names as $name){
echo $name.'<br>';
}


$ages = array();
for($i=1 ; $i<10 ; $i+=3){
$ages[] = $data[$i];
}
foreach($ages as $age){
echo $age.'<br>';
}

$genders = array();
for($i=2 ; $i<10 ; $i+=3){
$genders[] = $data[$i];
}
foreach($genders as $gender){
echo $gender.'<br>';
 }

$fullName = array();


for($i = 0 ; $i<3 ; $i++){
$fullName[] =$names[$i].$ages[$i].$genders[$i];
echo $fullName[$i]."<br>";
}

Upvotes: 0

PatomaS
PatomaS

Reputation: 1603

this is one option

$result = 'Mike,20,male,Ann,28,female,chuck,45,male';
$people = explode( ',', $result );
$final_result = array();
$i = 0;
$n = 0;
foreach ( $people as $keys => $values ) {
    $final_result[$n][] = $values;
    $i++;
    if ( $i%3 === 0 ) {
        $n++;
    }
}

Upvotes: 2

Related Questions