2

Seems like a pretty basic question, but how can I simplify an array such as:

Array
(
    [0] => Array
        (
            [blue_dog_1] => 2
        )
    [1] => Array
        (
            [red_dog_1] => 4
        )
    [2] => Array
        (
            [red_dog_2] => 6
        )
)

To be like:

Array
(
    [blue_dog_1] => 2
    [red_dog_1] => 4
    [red_dog_2] => 6
)

Thanks in advance.

Matthew Woodard
  • 754
  • 2
  • 10
  • 26

3 Answers3

15

Try this way to make it single dimension from multi dimension using array_merge

$singleD = array_reduce($multiD, 'array_merge', array());

OR

$singleD = call_user_func_array('array_merge', $multiD);
A l w a y s S u n n y
  • 36,497
  • 8
  • 60
  • 103
  • 2
    That first `array_reduce` option is excellent, much cleaner than using a loop. https://3v4l.org/pNjYj – jszobody Oct 21 '16 at 17:22
  • 1
    @MatthewWoodard, glad it works for you, actually there are various way to make multidimensional array to single dimensional, but I like array_merge mostly. – A l w a y s S u n n y Oct 21 '16 at 17:25
2

Try this,

foreach($array as $sub_val)
{
   foreach($sub_val as $key=>$val)
   {
      $new_array[$key] = $val;
   }
}
print_r($new_array);
Dave
  • 3,073
  • 7
  • 20
  • 33
0

To accomplish this you can simply use array union operator.

$oldData = array(
             0 => array('blue_dog_1'=>2),
             1 => array('red_dog_1'=>4),
             2 => array('red_dog_2'=>6) 
          );

 $newData = array();
 foreach ($oldData as $arrayData) {
     $newData += $arrayData;
 }

 print_r($newData);
Md. Salahuddin
  • 1,062
  • 15
  • 22