从数组获取属性并替换

时间:2017-03-22 10:29:24

标签: php arrays laravel

我有这个数组:

object(stdClass)#458 (2) {
  ["1"]=>
  object(stdClass)#456 (3) {
    ["title"]=>
    string(3) "Test Product 1"
    ["quantity"]=>
    int(1)
    ["price"]=>
    int(1221)
  }
  ["shipping"]=>
  object(stdClass)#457 (3) {
    ["quantity"]=>
    int(1)
    ["title"]=>
    string(13) "Free Delivery"
    ["price"]=>
    int(0)
  }
}

我在页面上显示这个。

@foreach($order->getOrderData($order->order_details) as $itemId => 
     <?php $total += ($item->price * $item->quantity); ?>
     <h4 class="media-heading">{{ $item->title }}</h4>
      {{ $item->quantity }}
      ${{ $item->price * $item->quantity }} / €{{ $order['total_eur'] }}
@endforeach

到目前为止,除了我从数据库$order['total_eur']调用的加值之外,一切都很完美。下订单时会保存此值,因此我以美元显示总金额,以欧元显示总金额。

这里的问题是${{ $item->price * $item->quantity }}还包含运费,而且运费是免费的,例如页面上显示$ 0

Test Product 1   $122 /  €113      
Free Delivery    $0 / €113 

我要做的是在交货时免费更换,例如["shipping"]=>["price"] = 0代替0。是这样的:

Test Product 1   $122 /  €113      
Free Delivery    $0 / €0 

我可以像这样访问它

<?php $shipping = $order->getOrderData($order->order_details)->shipping->price; ?>

但我无法弄明白如何在foreach循环中更改它。

我希望我解释清楚易懂。任何人都可以建议一些可行的方法吗?

更新:如果在foreach内部我已经尝试过这么简单,但仍然显示两者都是欧元价格

${{ $item->price * $item->quantity }} 
  @if( ! $order->getOrderData($order->order_details)->shipping) 
      {{ $order->getOrderData($order->order_details)->shipping->price }} 
  @else 
      €{{ $order['total_eur'] }} 
  @endif

1 个答案:

答案 0 :(得分:1)

@foreach($order->getOrderData($order->order_details) as $itemId => $item)
     <?php $total += ($item->price * $item->quantity); ?>
     <h4 class="media-heading">{{ $item->title }}</h4>
      {{ $item->quantity }}
      @if ($itemId == "shipping" && $item->price == 0) 
        $0 / €0
      @else
        ${{ $item->price * $item->quantity }} / €{{ $order['total_eur'] }}
      @endif
@endforeach

这里我们正在检查数组是否是运输项目,价格是否设置为零。如果是这样我们显示零€,否则我们显示实际成本。

相关问题