phparraysmultidimensional-arraymerging-data

Append a new column with a static value to a pre-populated 2d array


$array = array(
    array("a" => 1),
    array("a" => 2)
);

I need to push data to sub array element in $array,

End result must be as follow,

Array (
    [0] => Array (
        [a] => 1
        [b] => 2
    )
    [1] => Array (
        [a] => 2
        [b] => 2
    )
)

I used following ways.

  1. foreach ($array as &$a) { 
        $a['b'] = 2;
    }
    
  2. $result = array_map("pushdata", $array);
    function pushdata($a) {
        $a['b'] = 2;
    }
    

What is the most suitable and efficient way when $array consists of more than 1000 records?


Solution

  • Here is an example using array_walk() to add a new key b to each sub-array:

    $array = array(array('a' => 1), array('a' => 2));
    array_walk($array, function(&$item, $key) {
      $item['b'] = 2;
    });
    print_r($array);
    /* outputs:
    Array
    (
      [0] => Array
      (
          [a] => 1
          [b] => 2
      )
      [1] => Array
      (
          [a] => 2
          [b] => 2
      )
    )
    */