当前位置: 首页 > 后端技术 > PHP

没有双层foreach怎么能得到我想要的数据

时间:2023-03-29 17:50:29 PHP

1.今天用region表setting_area和country表setting_country做业务,列出country字段想知道对应哪个region以及这个region的详细信息,有人会用双层foreach的写法,number小当然没问题,但是一旦遍历到一定的数据量,这种写法就会被骂!2.抛出使用laravel的with方法,其实可以考虑使用数组键映射的思想。3.比如先找出所有国家的数据。country中有一个字段area_id与area表的主键相关联。这里就不细说了,大家可以自行百度。查出country表,获取对应的area_id,将area_id的结果集ids复用到area表中进行查询。关键是,得到的id当然是一个二维数组key,可以用array_column完成。最后通过数组键映射将foreach得到的国家数据映射进去。4、赋值代码如下:$country=DB::table("setting_country")->get();$ids=array_unique($country->pluck('area_id')->toArray());$some_other_infos=SettingAreaModel::select()->whereIn('id',$ids)->get()->toArray();$new_array=array_column($some_other_infos,null,"id");foreach($country)as$key=>$item){$country[$key]->area_info=$new_array[$item->area_id];}代码是随便写的。开发过程中不建议使用Facades中的DB。区内推荐使用单例模式认为写起来更优雅。