Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 20.09.2017 22:29:10

Соединить 2 массива

Добрый вечер. Начинаю изучать laravel (использую версию 5.2)
В views есть форма которая добавляет поля динамически:

<div class="button1" id="firstdata">
                  <div class="form-custom">
                      <div class="col-xs-5 col-md-5">
                          {!!Form::select('materials_outfits[]', [''=>Lang::get('ru.select_material'), Lang::get('ru.materials')=>$materials->lists('name','id')->toArray()],'',['class' => 'form-control select m-b']) !!}
                      </div>
                      <div class="col-xs-5 col-md-5">
                          {!! Form::text('materials_amount[]',null,['class' => 'form-control m-b', 'placeholder' => 'Количество']) !!}
                      </div>
                      <div class="col-xs-2 col-md-2">
                          <div class="tools">
                              <span class="btnRemove1" data-toggle="modal" data-target="#">
                                  <a class="btn btn-primary m-b" data-toggle="tooltip" data-placement="top" title="{!! Lang::get('ru.delete') !!}" onclick="document.getElementById('firstdata').innerHTML = ''">
                                      <i class="icon-trash"></i>
                                  </a>
                              </span>
                          </div>
                      </div>
                  </div>
              </div

Для добавления полей использую javasript:

<script>
    $(document).ready(function() {
        var x = 0;
        var n = 0;
        $('.btnAdd1').click(function() {
            n++;
            $('.button1').append('<div class="form-custom">' +
                    '<div class="col-xs-5 col-md-5" >' +
                    '{!!Form::select("materials_outfits[]", [""=>Lang::get("ru.select_material"), Lang::get("ru.materials")=>$materials->lists("name","id")->toArray()],"",["class" => "form-control select m-b"]) !!}' +
                    '</div>' +
                    '<div class="col-xs-5 col-md-5" >' +
                    '{!! Form::text("materials_amount[]",null,["class" => "form-control m-b", "placeholder" => "Количество"]) !!}' +
                    '</div>' +

                    '<div class="col-xs-2 col-md-2">' +
                    '<div class="tools"> <span class="btnRemove1" data-toggle="modal" data-target="#"><a class="btn btn-primary m-b" data-toggle="tooltip" data-placement="top" title="Delete"><i class="icon-trash"></i></a></span> </div>' +
                    '</div>' +
                    '</div>'
                    ); // end append
            $('div .btnRemove1').last().click(function(e) {
                e.preventDefault();
                $(this).closest('.form-custom').remove();
                x--;
            });

        });
    });


</script>

Дальше после заполнения полей и отправки формы, в контроллере обрабатываю все поля функцией store для дальнейшей записи в базу:

// outfits_materials
      $use_amounts = Arr::build($request->input('materials_amount'), function ($key, $name){
        return [$key, ['amount'=>is_array($name) ? $name[0] : $name]];
      });
      $use_materials = Arr::build($request->input('materials_outfits'), function ($key, $name)
      {
        return [$key, ['id_materials'=>is_array($name) ? $name[0] : $name]];
      });
      dd($use_amounts, $use_materials);

На выходе имею следующий вид если заполнено 3 поля:

array:3 [▼
  0 => array:1 [▼
    "amount" => "100"
  ]
  1 => array:1 [▼
    "amount" => "101"
  ]
  2 => array:1 [▼
    "amount" => "102"
  ]
]
array:3 [▼
  0 => array:1 [▼
    "id_materials" => "18"
  ]
  1 => array:1 [▼
    "id_materials" => "18"
  ]
  2 => array:1 [▼
    "id_materials" => "18"
  ]
]

Собственно хочу получить такой вид, но не понимаю как сложить 2 массива:

array:3 [▼
  0 => array:1 [▼
    "amount" => "100"
    "id_materials" => "18"
  ]
  1 => array:1 [▼
    "amount" => "101"
    "id_materials" => "18"
  ]
  2 => array:1 [▼
    "amount" => "102"
    "id_materials" => "18"
  ]
]

Спасибо всех кто откликнется.

Не в сети

#2 21.09.2017 15:04:33

Re: Соединить 2 массива

$res = array_map('array_merge', $arr1, $arr2)

вроде должно работать…

Не в сети

#3 21.09.2017 19:18:05

Re: Соединить 2 массива

Благодарю, сработало. +1 в репутацию

Не в сети

Подвал раздела