我正在开发一个大型项目,并且遇到了一个奇怪的问题,即从传递给刀片模板的大型数组中检索数据。我在模板中按2个块访问数组,如下所示。 echo语句只是我要测试的数组访问权限,但是我在while循环中放入的任何代码都会发生此问题。
我删除了所有HTML,因为它对问题没有影响
请注意,$ data ['trolley_spots']
@foreach ($data['data'] as $key=>$value)
@php
$z = 0;
while($z < $data['trolley_spots'] {
echo "<br />".$z."<br />;
echo $data['data'][$key][$z][0]->stackerType;
$z++;
}
@endphp
@endforeach
带有while循环的代码块在foreach循环内重复,一次获取数组的前半部分,第二次获取数组的后半部分。每个foreach循环的结果都放在div列中,以并排显示输出。在第一个while循环中,$ data ['trolley_spots']实际上是第一个while循环中的$ data ['spots']。这个想法是可以将不同的值传递给每个while循环。
第一个while循环会按预期进行,当HTML出现时,我得到的正是我期望的结果。
在第二个循环中,$ data ['data'] [$ key] [$ z] [0]-> stackerType中的$ z;是麻烦发生的地方。可以看出,我在echo语句中显示了$ z值,并且随着$ z的增加,我看到了正确的值。但是我得到了错误
Undefined property: stdClass::$stackerType (View: C:\xampp\htdocs\egmbank\resources\views\drop_route\drop_route_1.blade.php)
如果我将$ z替换为0,则可以看到数组中的期望值,但是由于$ z可以在0到40之间,所以如果不是0,我会得到相同的错误。
如果我使用print_r()语句检查数组的内容,则会看到以下结构
Array (
[0] => Array (
[0] => Array (
[0] => stdClass Object (
[devId] => 40018306
[serialNumber] => 111001
[devTypeId] => 1
[devTypeName] => Reel Machine
[zoneName] => 11
[zoneId] => 40000038
[bankId] => 40001140
[bankName] => 10
[stand] => 1
[assetNumber] => 878476
[stackerType] => IR
[isActive] => 1
)
)
[1] => Array (
[0] => stdClass Object (
[devId] => 40018801
[serialNumber] => 111002
[devTypeId] => 1
[devTypeName] => Reel Machine
[zoneName] => 11
[zoneId] => 40000038
[bankId] => 40001140
[bankName] => 10
[stand] => 2
[assetNumber] => 874736
[stackerType] => IR
[isActive] => 1
)
)
Rest of the array here
)
)
第一个索引是$ key值,介于0和4之间。第二个索引是$ z值,介于0和39之间。因此$ data ['中每个$ key数组的边有40个元素。数据']数组
我已经尝试过对代码进行许多更改,并且似乎对此错误没有任何影响。
第一个while循环工作正常
在第二个while循环中
$ key的0到4之间的任何值都可以 如果将$ z的值更改为0,我将得到一个有效的结果,这对数组结构是有意义的。如果我将其值更改为1,我会期望数组的第二个元素,但是却收到错误消息。
对于如何纠正此错误,我将不胜感激,因为这是使该应用程序完成的真正障碍