Nikunj V
Nikunj V

Reputation: 293

PHP - Add new object to every array of objects

Consider this array of objects in PHP:

 array:2 [
      0 => array:4 [
        "Row_Id" => 256
        "Start_Date" => "2020-05-16"
        "account_code" => ""
        "caller_number" => "452"
        ]
    
      1 => array:4 [
        "Row_Id" => 257
        "Start_Date" => "2020-05-16"
        "account_code" => ""
        "caller_number" => "42"
        ]

      2 => array:4 [
        "Row_Id" => 258
        "Start_Date" => "2020-05-16"
        "account_code" => ""
        "caller_number" => "428"
        ]
    ]

I want to add "callee_number:100" in every array so my output should look like these:

     array:2 [
          0 => array:5 [
            "Row_Id" => 256
            "Start_Date" => "2020-05-16"
            "account_code" => ""
            "caller_number" => "452"
            "callee_number" => "100"
            ]
        
          1 => array:5 [
            "Row_Id" => 257
            "Start_Date" => "2020-05-16"
            "account_code" => ""
            "caller_number" => "42"
            "callee_number" => "100"

            ]

          2 => array:5 [
            "Row_Id" => 258
            "Start_Date" => "2020-05-16"
            "account_code" => ""
            "caller_number" => "428"
            "callee_number" => "100"
            ]
        ]

I have taken the above input array in $get variable. Now I am calling array_push to append callee_number to every array:

  array_push($get,[
   'callee_number':'100'
    ]);

Also tried using array_merge but callee_number is not getting appended. How can I achieve that ?

Upvotes: 0

Views: 725

Answers (2)

IGP
IGP

Reputation: 15786

Given the following array:

$array = [
    [
        "Row_Id" => 256,
        "Start_Date" => "2020-05-16",
        "account_code" => "",
        "caller_number" => "452",
    ],
    [
        "Row_Id" => 257,
        "Start_Date" => "2020-05-16",
        "account_code" => "",
        "caller_number" => "42",
    ],
    [
        "Row_Id" => 258,
        "Start_Date" => "2020-05-16",
        "account_code" => "",
        "caller_number" => "428",
    ],
];

Native PHP

$array = array_map(function ($item) { return $item + ['callee_number' => 100]; }, $array);

Using collections

$array = collect($array)->map(function ($item) { return $item + ['callee_number' => 100]; })->toArray();

Using PHP 7.4 shorthands

$array = array_map(fn($item) => $item + ['callee_number' => 100], $array);
// Or
$array = collect($array)->map(fn($item) => $item + ['callee_number' => 100])->toArray();

Upvotes: 4

joshstrike
joshstrike

Reputation: 1823

To add or modify an element in each sub-array you would do this:


foreach ($get as &$g) {
  $g["callee_number"] = 100;
}

Or this:

for ($c = 0; $c < count($get); $c++) {
$get[$c]["callee_number"] = 100;
}

Upvotes: 0

Related Questions