Объединить массив на основе ключа PHP - PullRequest
0 голосов
/ 19 июня 2020

Я хочу объединить 2 массива в массив, где соответствующий элемент будет установлен под общим ключом массива. Здесь все товары с одинаковой категорией будут отмечены go в соответствующей категории.

$categories = category::where('cat_flag','Y')->pluck('id')->toArray();
$items = item::where('item_flag','Y')->get(['item_name','cat_id'])->toArray();

Я хочу отформатировать их в один массив, как показано ниже:

$formatedArray = [
    21=>[{'item_name'=>'abc','cat_id'=>'21'},{'item_name'=>'def','cat_id'=>'21'}],
    32=>[{'item_name'=>'abc','cat_id'=>'32'}]
]

Я пробовал с этим. Я понимаю, что это неправильно, но не смог решить, как достичь своей цели.

$formatedArray = [];
foreach ($categories as $cat){
    foreach ($items as $itm) {
        $formatedArray[ $cat->id ] = $itm;
    }
}

1 Ответ

0 голосов
/ 20 июня 2020

Попробуйте следующее:

$formatedArray = [];

foreach ($categories as $category) {
    foreach ($items as $item) {
        if ($item['cat_id'] == $category) {
            $formatedArray[$category][] = $item;
        }
    }
}

Примечание: если cat_id (пример: 'cat_id' => '32') должен быть строкой, вам нужно преобразовать значение.

введите описание изображения здесь

...