首页 > 解决方案 > Laravel - 试图获取非对象的属性 - PHP

问题描述

我目前正在尝试学习 Laravel 和 PHP。

我需要能够导入 Excel 文件,然后从该文件中获取数据。目前,导入部分有效,我可以从文件中看到数据。但是,我无法访问数据。

我已经阅读了toArray()Laravel 中的函数,并使用如下:

 $data = Excel::load($path, function($reader) {})->skipColumns(2)->get();
 $data = $data->toArray();

         foreach ($data as $key => $value) {

           //We only need some of the available data.
           echo $value->next_milestone_desc_cur._comp._incl_rltd;
           echo $value->shipment_id;

          }

上面的代码给了我以下错误:

试图获取非对象的属性“next_milestone_desc_cur”

下面是我使用生成的数组的输出dd($value)

array:543 [▼
  0 => array:20 [▼
    "next_milestone_desc_cur._comp._incl_rltd" => "005. DK - Add DropMode/Local Trp Org in Pickup Tab"
    "milestone_cur._comp._sequence_no" => "005"
    "cur._comp._export_validation" => "NOT OK"
    "shipment_id" => "SBRY0162091"
    "consol_id" => "CDK327188"  ]
  1 => array:20 [▼
    "next_milestone_desc_cur._comp._incl_rltd" => "005. DK - Add DropMode/Local Trp Org in Pickup Tab"
    "milestone_cur._comp._sequence_no" => "005"
    "cur._comp._export_validation" => "NOT OK"
    "shipment_id" => "SBRY0162124"
    "consol_id" => "CDK327221"
  ]

我在这里做错了什么?我也试过 echo $value[0]->next_milestone_desc_cur._comp._incl_rltd;了,但这也不起作用。

标签: phplaravel-5eloquent

解决方案


您正在尝试将数组作为对象访问,因此您的错误并解决第二点,您需要使用嵌套循环然后访问子数组。

你的数组看起来像这样:

$array = [
  0 => [
    0 => [
      'test' => 'value'
    ],

    1 => [
      'test' => 'something'
    ]  
  ],

  1 => [
    0 => [
      'test' => 'value'
    ],

    1 => [
      'test' => 'something'
    ]  
  ]  
];

您需要以下循环:

foreach ($array as $key => $nested) {
  foreach ($nested as $nested_value) {
    // You have access to your inner arrays.
    echo  $nested_value['test'] . ' | ';
  }
}

你的嵌套循环在$nested哪里$value

现场示例

重复


推荐阅读