cch*_*cch 2 php arrays laravel blade
我在使用laravel中的刀片循环遍历多维数组时遇到了问题.我从控制器发送数据,如下所示:
return View::make('store.categories')
->with('brands', $brands);
Run Code Online (Sandbox Code Playgroud)
如果我死了转储数据:
array (size=2)
0 =>
array (size=2)
0 => string 'Fender' (length=6)
1 => string '(2)' (length=3)
1 =>
array (size=2)
0 => string 'Gibson' (length=6)
1 => string '(1)' (length=3)
Run Code Online (Sandbox Code Playgroud)
我试过使用两个@foreach循环,但我无法让它工作:
@foreach($brands as $brand)
@foreach($brand as $b)
{{$b}}
@endforeach
@endforeach
Run Code Online (Sandbox Code Playgroud)
以上将输出:Fender (2) Gibson (1).
$b输出的0值,Fender但它只是为$b数组中的每个项打印0位置字符:
@foreach($brands as $brand)
@foreach($brand as $b)
{{$b[0]}}
@endforeach
@endforeach
Run Code Online (Sandbox Code Playgroud)
以上将输出F ( G (.
在我的控制器中如果我这样做:
foreach ($brands as $b) {
foreach($b as $key=>$v) {
dd($v);
}
}
Run Code Online (Sandbox Code Playgroud)
它将输出string 'Fender' (length=6),这似乎是第一个@foreach作品中的第二个循环.虽然,当谈到上面提到的刀片代码时,却没有.
我可能做的事情非常糟糕.如何单独获取嵌套数组的值0和1的输出?任何帮助都非常感谢.
这就是我在控制器功能中创建数据的方法:
$products = Product::with('brand')->whereIn('category_id', $children->lists('id'));
$brand_ids = array();
$brands = array();
foreach ($products->get() as $p) {
$brand_ids[] = $p->brand_id;
}
$brand_count = array_count_values($brand_ids);
foreach ($brand_count as $key=>$value) {
$query = Brand::where('id', '=', $key)->lists('name');
// dd($query);
foreach($query as $key=>$name) {
$array = array(
$name,
'('.$value.')'
);
$brands[] = $array;
}
}
Run Code Online (Sandbox Code Playgroud)
调节器
$brands = Brand::whereIn('id', $brand_ids)->lists('name', 'id');
Run Code Online (Sandbox Code Playgroud)
刀
@foreach($brands as $id => $brand)
Id: {{$id}}, Brand: {{$brand}}
@endforeach
Run Code Online (Sandbox Code Playgroud)
这应该可以工作并保存您的性能,因为我们会分别查询所有品牌而不是每个品牌.更好的方法是建立产品关系并以此方式实现.
| 归档时间: |
|
| 查看次数: |
9022 次 |
| 最近记录: |