即使数组中有值,也从数组中获取null

时间:2017-07-17 11:34:09

标签: php arrays laravel

我有简单的订单系统。当订单提交时,客户应在其订单页面上有下载按钮。到现在为止还挺好。显示订单详细信息,但我看到它在数组中的一个附加值。

这就是数组的样子

object(stdClass)#454 (3) {
  ["223"]=>
  object(stdClass)#453 (3) {
    ["title"]=>
    string(7) "test"
    ["price"]=>
    int(12)
    ["file_id"]=>
    int(2)
  }
  ["224"]=>
  object(stdClass)#451 (3) {
    ["title"]=>
    string(13) "test2"
    ["price"]=>
    int(1)
    ["file_id"]=>
    int(3)
  }
  ["shipping"]=>
  object(stdClass)#456 (2) {
    ["title"]=>
    string(17) "Shipping Option 1"
    ["price"]=>
    int(10)
  }
}

对象223224是两种产品的ID。在页面上,我可以看到两个产品的titleprice,但file_id对于它们是NULL。这就是我显示它们的方式

 @foreach($download->getOrderData($download->order_details) as $itemId => $item)
     <p>{{ $item->title }}</p>
     <p>{{ $item->price }}</p>
     <p>{{ $item->file_id }}</p>
@endforeach

这是订单型号

public function getOrderData($data)
{
    $dataArray = json_decode($data, true);
    $arrayKeys = array_keys($dataArray);
    $arrayKeys = array_filter($arrayKeys, function ($value) {
        return ($value !== 'shipping');
    });
    $productIds = implode(',', $arrayKeys);

    $products = DB::table('products')
        ->leftjoin('category', 'products.category_id', '=', 'category.category_id')
        ->leftjoin('sub_category', 'products.sub_cat_id', '=', 'sub_category.sub_cat_id')
        ->where('product_id', $productIds)
        ->get();

    foreach ($products as $item) {
        if (!in_array($item->product_id, $arrayKeys)) continue;
        $dataArray[$item->product_id]['category'] = $item->category_name;
        $dataArray[$item->product_id]['sub_category'] = $item->sub_cat_name;

    }
    return json_decode(json_encode($dataArray));
}

1 个答案:

答案 0 :(得分:0)

我怀疑下划线会导致问题。 https://twig.symfony.com/doc/2.x/templates.html#variables

因此也许

{{ $item['file_id'] }}

可能会做到这一点。