Объединить два массива


у Меня есть форма с полями товары и количество, импортированные в накладной:

<div class="row">   
    <div class="form-group col-md-9">
      <label for="produto_nfe">Produto</label>
      <input type="text" value="" class="form-control" id="produto_nfe" name="produto_nfe[]" aria-describedby="" placeholder="predominância">
      <div class="produtos"></div>
    </div>
    <div class="form-group col-md-3">
      <label for="quantidade_nfe">Qtd</label>
      <input type="text" value="" class="form-control" id="quantidade_nfe" name="quantidade_nfe[]" aria-describedby="" placeholder="X">
      <div class="quantidade"></div>
    </div>                          
</div>

Они передаются через ajax с помощью $(form).serialize(); и, как являются несколько полей, шаг, они, как array php.

Используйте следующий код php для приема:

$produtos = $_POST['produto_nfe'];
$quantidades = $_POST['quantidade_nfe'];

Когда я var_dump возвращает следующий результат:

Продуктов:

array(3) 
{ 
    [0]=> string(5) "Toras" 
    [1]=> string(5) "Toras" 
    [2]=> string(5) "Toras" 
}

Количествах:

array(3) 
{ 
    [0]=> string(9) "0.7600 M3" 
    [1]=> string(10) "29.5700 M3" 
    [2]=> string(10) "29.5700 M3" 
}

Нужно что эти поля связаны в новый array, чтобы я мог добавить в запасе, я бы хотел остаться бушевала образом:

array(3) 
{ 
     NOME                QUANTIDADE
    [Toras]=> string(5) "0.7600 M3" 
    [Toras]=> string(5) "29.5700 M3" 
    [Toras]=> string(5) "29.5700 M3" 
}

Уже пробовал array_combine:

$produtos = $_POST['produto_nfe'];
$quantidades = $_POST['quantidade_nfe'];

var_dump(array_combine($produtos, $quantidades));

, Но возвращает только один результат:

array(1) 
{ 
    ["Toras"]=> string(10) "29.5700 M3" 
}

, Как это может быть сделано так, чтобы оставалась все продукты, связанные с количеством?

Author: Gustavo Lucksik, 2020-02-10

1 answers

, Как описано в комментариях формата array желаемое не может быть достигнуто, потому что в PHP ассоциативный массив не может иметь ключи снова и снова. При попытке добавить ключ повторил приводит к перезаписи последнего введенного значения.

, Как было указано в комментарии, что оба массива имеют одинаковую длину, возможность перестановки данных и массив, где каждый элемент имеет id пожаловать array $produtos и количество пришествия array $quantidade:

<?php

$produto = ["Toras", "Toras", "Toras"];

$quantidade = ["0.7600 M3", "29.5700 M3", "29.5700 M3"];

$romaneio = [];

foreach(range(0, count ($produto) - 1) as $i){
  $romaneio[] = ["id"=> $produto[$i], "quantidade" =>$quantidade[$i]];

}


print_r($romaneio);

, Что приводит к следующим array:

Array
(
    [0] => Array
        (
            [id] => Toras
            [quantidade] => 0.7600 M3
        )

    [1] => Array
        (
            [id] => Toras
            [quantidade] => 29.5700 M3
        )

    [2] => Array
        (
            [id] => Toras
            [quantidade] => 29.5700 M3
        )

)

Код работает в Repl.it: https://repl.it/repls/NotableCapitalDatalog

 2
Author: Augusto Vasques, 2020-02-10 17:22:51