【发布时间】:2015-07-15 22:27:18
【问题描述】:
我在 laravel 中使用刀片循环遍历多维数组时遇到问题。我正在从控制器发送数据,如下所示:
return View::make('store.categories')
->with('brands', $brands);
如果我死了转储数据:
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)
我尝试使用两个 @foreach 循环,但无法正常工作:
@foreach($brands as $brand)
@foreach($brand as $b)
{{$b}}
@endforeach
@endforeach
上面会输出:Fender (2) Gibson (1)。
我试图让
$b 的0 值输出Fender,但它只是为$b 数组中的每个项目打印0 位置字符:
@foreach($brands as $brand)
@foreach($brand as $b)
{{$b[0]}}
@endforeach
@endforeach
上面会输出F ( G (。
如果我这样做,在我的控制器中:
foreach ($brands as $b) {
foreach($b as $key=>$v) {
dd($v);
}
}
它将输出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;
}
}
【问题讨论】:
-
使用 dd 并不能证明它有效。 dd 结束执行,如果你使用两个 foreachs,你仍然会得到四个字符串,而不是你之后的两个字符串(Fender 和 Gibson)。
-
是的,你只需要一个 foreach。问题是为什么它在视图中显示为
[。 -
我用来生成
brands数据的方式有问题吗? -
@cchacholiades 你想要的输出是什么?你想在刀片中生成什么?
-
对不起@PawelBieszczad 我正在尝试访问品牌
array位置0和1,例如它第一次循环{{b[0]}}输出Fender和b[1]输出(2),第二次{{b[0]}}输出Gibson和b[1]输出(1)