根据PHP中的键组合数组

我想将 2 个数组合并到一个数组中,其中匹配项将设置在一个公共数组键下。此处所有具有相同类别的项目都将归入相应的类别。


$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;

    }

}


千万里不及你
浏览 83回答 1
1回答

慕村225694

试试这个:$formatedArray = [];foreach ($categories as $category) {    foreach ($items as $item) {        if ($item['cat_id'] == $category) {            $formatedArray[$category][] = $item;        }    }}注意:如果 cat_id(例如:'cat_id'=>'32')需要是一个字符串,那么您需要转换该值。
打开App,查看更多内容
随时随地看视频慕课网APP