Laravel 5刀片-在foreach中出现奇怪的情况
我有一个集合,我在下面显示为一个数组,以便于查看Laravel 5刀片-在foreach中出现奇怪的情况,laravel,laravel-5,laravel-blade,Laravel,Laravel 5,Laravel Blade,我有一个集合,我在下面显示为一个数组,以便于查看 array:3 [▼ 0 => array:7 [▼ "id" => 6 "name" => "food" "value" => "T1 M1" ] 1 => array:7 [▼ "id" => 7 "name" => "drink" "value" => "" ] 2 => array:7 [▼ "id" =>
array:3 [▼
0 => array:7 [▼
"id" => 6
"name" => "food"
"value" => "T1 M1"
]
1 => array:7 [▼
"id" => 7
"name" => "drink"
"value" => ""
]
2 => array:7 [▼
"id" => 8
"name" => "drink"
"value" => "A1 P1"
]
]
在我看来,我正在做如下事情
<div class="col-md-3 noPadding">
@foreach($party->partyOptions as $id => $data)
@if ($data->name === 'food')
<div class='col-md-12'>
<label>Number of food {{ $id + 1 }}:</label>
</div>
@endif
@endforeach
</div>
<div class="col-md-3 noPadding">
@foreach($party->partyOptions as $id => $data)
@if ($data->name === 'drink')
<div class='col-md-12'>
<label>Number of drink {{ $id + 1 }}:</label>
</div>
@endif
@endforeach
</div>
和要显示的第二个div
Number of food 1
Number of drink 1
Number of drink 2
然而,情况并非如此。相反,它继续id计数,因此我得到的输出是
Number of food 1
Number of drink 2
Number of drink 3
如果我有更多的名字,我正在搜索,数字继续
为什么会发生这种情况?每个循环的id不应该重置吗
任何与此相关的信息都将不胜感激
谢谢您使用的是集合的索引,而不是迭代的索引 要获取所需索引,请创建一个新集合,该集合将根据您的需要进行筛选:
@foreach($party->partyOptions->where('name','food')->values()作为$id=>$data)
食物{{$id+1}}的数量:
@endforeach
@foreach($party->partyOptions->where('name','drink')->values()作为$id=>$data)
饮料{{$id+1}的数量:
@endforeach
您使用的是集合的索引,而不是迭代的索引
要获取所需索引,请创建一个新集合,该集合将根据您的需要进行筛选:
@foreach($party->partyOptions->where('name','food')->values()作为$id=>$data)
食物{{$id+1}}的数量:
@endforeach
@foreach($party->partyOptions->where('name','drink')->values()作为$id=>$data)
饮料{{$id+1}的数量:
@endforeach
循环行为是完全正常的。您的$id
是正在迭代的数组中的索引。
见文件:
因此,在数组中,索引1
和2
下有“饮料”。您需要不同的方法-您需要单独的变量,在if块内递增:
<div class="col-md-3 noPadding">
{{$i = 0}}
@foreach($party->partyOptions as $id => $data)
@if ($data->name === 'drink')
{{$i ++}}
<div class='col-md-12'>
<label>Number of drink {{ $i }}:</label>
</div>
@endif
@endforeach
</div>
{{$i=0}}
@foreach($party->partyOptions as$id=>$data)
@如果($data->name==='drink')
{{$i++}
饮料{{$i}的数量:
@恩迪夫
@endforeach
循环行为是完全正常的。您的$id
是正在迭代的数组中的索引。
见文件:
因此,在数组中,索引1
和2
下有“饮料”。您需要不同的方法-您需要单独的变量,在if块内递增:
<div class="col-md-3 noPadding">
{{$i = 0}}
@foreach($party->partyOptions as $id => $data)
@if ($data->name === 'drink')
{{$i ++}}
<div class='col-md-12'>
<label>Number of drink {{ $i }}:</label>
</div>
@endif
@endforeach
</div>
{{$i=0}}
@foreach($party->partyOptions as$id=>$data)
@如果($data->name==='drink')
{{$i++}
饮料{{$i}的数量:
@恩迪夫
@endforeach
您正在选择集合的索引(变量名称id),因此您可以看到第一杯饮料从1
开始,第二组饮料从2
开始。您正在选择集合的索引(变量名称id),因此,您可以看到,第一杯饮料从1
开始,第二组饮料从2
开始。使用框架工具进行了清晰的解释和重构+1.你为什么认为它很有说服力?@Kocik-我不这么认为。在我的代码片段中没有任何假设雄辩的东西。我没有注意到它的集合类型:)使用框架的工具进行了清楚的解释和重构+1.你为什么认为它很有说服力?@Kocik-我不这么认为。在我的代码片段中没有任何假定雄辩的东西..我没有注意到它是集合类型:)