Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 5刀片-在foreach中出现奇怪的情况_Laravel_Laravel 5_Laravel Blade - Fatal编程技术网

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-我不这么认为。在我的代码片段中没有任何假定雄辩的东西..我没有注意到它是集合类型:)