PHP - Добавить новый объект в каждый массив объектов - PullRequest
2 голосов
/ 01 августа 2020

Рассмотрим этот массив объектов в 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"
        ]
    ]

Я хочу добавить "callee_number:100" в каждый массив, поэтому мой результат должен выглядеть следующим образом:

     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 взяли указанный выше входной массив в переменную $ get. Теперь я вызываю array_push, чтобы добавить callee_number к каждому массиву:

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

Также пробовал использовать array_merge, но callee_number не добавляется. Как мне этого добиться?

Ответы [ 2 ]

4 голосов
/ 01 августа 2020

Учитывая следующий массив:

$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",
    ],
];

Собственный PHP

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

Использование коллекций

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

Использование PHP 7,4 сокращений

$array = array_map(fn($item) => $item + ['callee_number' => 100], $array);
// Or
$array = collect($array)->map(fn($item) => $item + ['callee_number' => 100])->toArray();
0 голосов
/ 01 августа 2020

Чтобы добавить или изменить элемент в каждом подмассиве, вы должны сделать это:


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

Или так:

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

...