【问题标题】:Trying to get property 'prd_name' of non-object while trying to show results with for loop在尝试使用 for 循环显示结果时尝试获取非对象的属性“prd_name”
【发布时间】:2021-09-16 19:12:09
【问题描述】:

我想用for loop从数据库中检索一些数据,所以在控制器上,我添加了这个:

$foundOrder = Cart::select('crt_content')->whereCrtId($cart->crt_id)->latest()->first();
$foundOrder = json_decode($foundOrder->crt_content);

if ($foundOrder != null) {
   foreach ($foundOrder as $key => $value) {
      $prds[] = [
          Product::with('uploaded')->wherePrdId($value->id)->select('*')->first(),
          $value->quantity,
          $value->price
      ];
   }
} else {
   $prds = [];
}

所以$prds 是一个数组,如果我这样做{{ dd($prds) }},我会得到这个:

所以在 Blade 中,我尝试了这个:

@for($i=0;$i<=count($prds);$i++)
   {{ $prds[$i]->prd_name }}
   {{ $prds[$i]->prd_sale_price }}
@endfor

但它返回此错误:

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

那么这里有什么问题?正如您在图片中看到的,我正在获取所有现有产品及其属性(例如prd_idprd_nameprd_sale_price)。

【问题讨论】:

    标签: php laravel for-loop laravel-5.8


    【解决方案1】:

    您将 Product 对象、数量和价格存储在您的 $prds 数组中。你有数组里面的数组。使用下面的代码

    使用foreach循环

    @foreach($prds as $data)
      // in data 0 index will your product object,1 will be quantity and 2 will be price
       {{ $data[0]->prd_name }} // prd_name from product object
       {{ $data[0]->prd_sale_price }}
    @endforeach
    

    // 使用 for 循环

    @for($i=0;$i<count($prds);$i++)
       {{ $prds[$i][0]->prd_name }} 
       {{ $prds[$i][0]->prd_sale_price }}
    @endfor
    

    【讨论】:

    • 未定义偏移量:4
    【解决方案2】:

    您的$prds 是一个数组,每个元素都有以下结构:

    [
        product,
        quantity,
        price
    ];
    

    所以如果你遍历它,想要获取一个产品的属性,你需要从$prds[$i][0]获取它,例如:$prds[$i][0]-&gt;prd_name

    更新:您需要从索引0 循环到count($prds) - 1

    @for($i = 0; $i <= count($prds) - 1; $i++)
    

    【讨论】:

    • 未定义偏移量:4
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 2016-05-02
    • 1970-01-01
    • 1970-01-01
    • 2021-02-10
    • 1970-01-01
    相关资源
    最近更新 更多