Laravel Объединение массивов в коллекцию?

Николка

Новичок
Добрый день, Уважаемое сообщество, требуется Ваша помощь, не могу разобраться с коллекциями, в общем вопрос следующий, имеется несколько массивов ключ=>значение, ключ у всех одинаковый. Как все это собрать в одну коллекцию, чтоб записать в БД. Все данные приведены к нужной форме через функцию map

Код:
$item_name= collect($nm)->map(function($item, $key){
return [
'c_id_item' => $key,
'name_item' => $item

];
})->toArray();

$gr_name= collect($gr)->map(function($item, $key) {
return [
'c_id_item' => $key,
'c_id_group_item' => $item

];
})->toArray();

$all_data= collect([]);
$all_data2= collect([]);
$all_data2= $all_data2->merge([$gr_name]);
$all_data2= $all_data2->merge([$item_name]);
$all_data= $all_data->merge($all_data2->toArray());
Вместо того чтоб объеденить как в мануале

Код:
$collection = collect(['product_id' => 1, 'name' => 'Desk']); $merged = $collection->merge(['price' => 100, 'discount' => false]); $merged->all(); // ['product_id' => 1, 'name' => 'Desk', 'price' => 100, 'discount' => false]
Я получаю коллекцию, в которой сперва значения $gr_name, затем в хвосте $item_name
Подскажите как нужно объеденить данные, чтоб получилось
Код:
['c_id_item' => hfghfgh, 'c_id_group_item' => dfghfgh, 'name_item' => dfgdfg ]
, причем c_id_item во всех массивах одинаковы. Заранее благодарен за помощь, два дня уже ничего не получается.
 
Последнее редактирование:

AmdY

Пью пиво
Команда форума
потому что ты бред какой-то делаешь.
PHP:
$merged = [];
foreach($nm as $key => $value) {
    $merged[$key] = [
        'c_id_item' => $key,
        'name_item' => $value,
        'c_id_group_item' => $gr[$key] 
    ];
}
 

Николка

Новичок
Так расхождения будут, количество элементов разное, там еще 'price' и еще два параметра, их count разный, т.е. нужно в вайле записывать сразу, 5 пар сходу куда то писать при проходе массива, а как я не знаю...
 

AmdY

Пью пиво
Команда форума
Ладно, расскажи откуда ты такие мусорные данные собираешь?
 

HORO

Новичок
Раз ключи одинаковые, то и собирай по ключам, например так
PHP:
$merged = [];
foreach($nm as $key => $value) {
    $out=[
        'c_id_item' => $key,
        'name_item' => $value,
        'c_id_group_item' => $gr[$key]
    ];
    if(!isset($merged[$key])) $merged[$key]=$out;
    else $merged[$key]=array_merge($merged[$key],$out); // новые элементы добавятся, старые перезапишутся )
}
 

Николка

Новичок
Спасибо за ответ, именно так и сделал уже, только собираю в вайле, сразу же как получил, тут же и записал куда нужно в массив с именнованным ключем
 
Сверху