Question

Help:

Array format like this:

    $arr=array(
        array('element1'=>'a','element2'=>1),
        array('element1'=>'b','element2'=>2),
        array('element1'=>'a','element2'=>2),
        array('element1'=>'b','element2'=>3),
        );

Synthesis is needed,how to change it like:

$arr=array(
    array('element1'=>'a','element2'=>array(1,2)),
    array('element1'=>'b','element2'=>array(2,3)),
    );
Was it helpful?

Solution

$new = array();
foreach ($arr as $key => $value) {
    $new[$value['element1']][] = $value['element2'];
}
$new2 = array();
foreach($new as $k=>$v){
    $new2[] = array('element1'=>$k,'element2'=>$v);
}
print_r($new2);

Result

array(
    array('element1' => 'a', 'element2' => array(0 => 1, 1 => 2)),
    array('element1' => 'b', 'element2' => array(0 => 2, 1 => 3)),
   )
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top