2014-10-28 3 views
1

давалось 3 коллекции:Объединить Коллекции на ключ, как вложенные объекты в Laravel

$links = new Collection($array_link_objects); 
$images = new Collection($array_image_objects); 
$combined = new Collection(); 

Объединить их так, верно следующее:

$combined[$i]->link = $links[$i]; 
$combined[$i]->image = $images[$i]; 

Edit: Это не часто, вы будете иметь 2 массивы, которые вам нужно объединить по ключу и вложить их в свойства. Но если вы это сделаете, это сработает.

+0

Вы объединили их? Также отсутствует '' 'во втором объединенном. – Kypros

+0

Нет, я хотел бы объединить их, используя функции коллекции, а не вложенные операторы foreach. –

ответ

0

Вот как это можно сделать.

$merged = combine(['link' => $links, 'image' => $image]); 

public function combine($collections) { 
    $merged = new Collection(); 
    $max = count($collections[key($collections)]); 
    for($i = 0; $i < $max; $i++) 
    { 
    $item = new \stdClass(); 
    foreach($collections as $key => $collection) { 
     $item->{$key} = $collection[$i]; 
    } 
    $merged->add($item); 
    } 
    return $merged; 
} 
Смежные вопросы