Как ввести новый ключ, связанный с новым значением в конце Многомерных массивов в PHP


у Меня есть многомерный массив со следующей структурой ниже:

Array
(
    [0] => Array
         (
             [id] => 1877
             [type_id] => 4
             [service_id] => 1100
         )

    [1] => Array
         (
             [id] => 2299
             [type_id] => 2
             [service_id] => 1148
         )
)

Изображение array

мне Нужно динамически вставить новый ключ, связанный со значением в конце каждого ключа массива, чтобы получить следующую структуру ниже):

Array
(
    [0] => Array
         (
             [id] => 1877
             [type_id] => 4
             [service_id] => 1100
             [nova_chave] => "Novo Valor"  <--- 
         )

    [1] => Array
         (
             [id] => 2299
             [type_id] => 2
             [service_id] => 1148
             [nova_chave] => "Novo Valor"  <--- 
         )
)

Образ нового массива

может Кто-нибудь помочь мне, как реализовать это решение в PHP?

Author: Icaro Martins, 2019-03-14

3 answers

Есть несколько способов сделать это. Я оставлю двух примеров:

Первый пример:

<?php

    $matriz = array(
        array("id" => 1877,"type_id" => 4,"service_id" => 1100),
        array("id" => 2299,"type_id" => 2,"service_id" => 1148)
    );

    $novo_1 = 1111; 

    //Inserindo o valor dinamicamente 
    for($i=0; $i < count($matriz); $i++)
    {
        $matriz[$i]["nova_chave"] =  $novo_1;
    }

    echo "<pre>";
        print_r($matriz);
    echo "</pre>";
?>

Второй Пример:

<?php

    $matriz_2 = array(
        array("id" => 1877,"type_id" => 4,"service_id" => 1100),
        array("id" => 2299,"type_id" => 2,"service_id" => 1148)
    );  

    $novo_2 = ["nova_chave_2" => 2222];  

    //Inserindo a chave e o valor dinamicamente
    for($i=0; $i < count($matriz_2); $i++)
    {
        foreach($novo_2 as $key => $value)
        {
            $matriz_2[$i][$key] = $value;
        }
    }

    echo "<pre>";
        print_r($matriz_2);
    echo "</pre>";

?>
 0
Author: Gato de Schrödinger, 2020-06-09 16:59:45

Проще, чем вы думаете. Просто использовать + с новый ключ и значение с помощью $arrayAssoc.

, Чтобы вставить новый ключ в начале:

foreach ($arrayAssoc $key => $value) { $arrayAssoc[$key] = array('nova_chave'=> "novo_valor") + $arrayAssoc[$key]; }

, Чтобы вставить новый ключ, в конце концов:

foreach ($arrayAssoc $key => $value) { $arrayAssoc[$key] = $arrayAssoc[$key]+ array('nova_chave'=> "novo_valor"); }

 1
Author: Daniel Wong Costa, 2020-05-30 06:16:49

Таким образом, в случае, если он воплощал 'X' вопроса является тот факт, что в массиве значений не существует фиксированное имя для нового раздела, который будет добавлен в массив начального.

И Это стало бы решением:

foreach ($arrayAssociativo as $arr)
{
  foreach ($arrayValores as $arrValor)
  {
    if ($arr['id'] === $arrValor['id'])
    {
      $arr = array_merge($arr, $arrValor);
    }
  }
}

И в Этом случае для каждой позиции, ваш ассоциативный массив начального проверяется все позиции вашего массива значений. Если какое-либо положение имеет тот же ИДЕНТИФИКАТОР в массив mergeados array_merge.

Учитывая, в структуру, которую вы сообщается, что массив значений всегда будет обладать только двумя ключами (id и новый ключ добавляется к), ключ id, если будет поддерживать новый ключ будет добавлена, рядом с их значением.

 0
Author: Vinicius Gabriel, 2019-03-14 14:02:07