2016-10-19 100 views
-1

我試圖以數組形式傳遞購物車中第一個產品的價格。在PHP中動態構建JSON數組?

下面的代碼通過兩個值作爲一個變量,那不是我想要的東西 - 我想一個數組爲每個項目的價格在車建。

<script> 

window.dataLayer = window.dataLayer || []; 
window.dataLayer.push({ 

    'firstItemUnitPrice': '<?php 
global $woocommerce; 
$items = $woocommerce->cart->get_cart(); 

    foreach($items as $item => $values) { 
     $_product = $values['data']->post; 
     $price = get_post_meta($values['product_id'] , '_price', true); 

     echo $price; 
    }; 
?>'  
}); 

</script> 

上述輸出碼:

firstItemunitprice:1144

這是因爲有兩個產品在購物車,一個價值$ 11和一個$ 44

我知道如何將它們分開,但我希望它們可以作爲數組添加。幫幫我?

+2

創建普通'array'然後用'json_encode()'就可以了 – simon

+0

你不「建JSON陣列」。您使用您正在使用的任何語言構建NATIVE數組。然後將該數組編碼爲json。 –

回答

1

所以我很理解你想是這樣的:

dataLayer = [{firstItemUnitPrice:11}, {firstItemUnitPrice:44}]

要做到這一點,最好的辦法是先在PHP,之後創建陣列只是呼應的是陣列的json_encode

所以,你可以創建這樣的數組:

<?php 
    global $woocommerce; 
    $items = $woocommerce->cart->get_cart(); 
    $dataLayer = []; 
    foreach($items as $item => $values) { 
     $_product = $values['data']->post; 
     $dataLayer[] = [ 
       'firstItemUnitPrice' => get_post_meta($values['product_id'] , '_price', true) 
     ]; 

    }; 
?> 

而在此之後呼應json_encode到數據層在javascript這樣的:

<script> 

    window.dataLayer = '<?php echo json_encode($dataLayer); ?>'; 

</script> 

我希望這是你想要的。