Laravel 5.6刀片模板数组未定义属性:stdClass :: $ stackerType

时间:2018-08-08 21:23:09

标签: arrays php-7 laravel-blade laravel-5.6

我正在开发一个大型项目,并且遇到了一个奇怪的问题,即从传递给刀片模板的大型数组中检索数据。我在模板中按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,我会期望数组的第二个元素,但是却收到错误消息。

对于如何纠正此错误,我将不胜感激,因为这是使该应用程序完成的真正障碍

0 个答案:

没有答案