在PHP中动态构建JSON数组?

时间:2016-10-19 14:16:24

标签: php json wordpress

我试图以数组的形式传递购物车中第一个产品的价格。

下面的代码将这两个值作为一个变量传递,而不是我想要的 - 我希望为购物车中的每个商品价格构建一个数组。

<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美元。

我知道如何分开它们但我想将它们作为数组添加。帮助

1 个答案:

答案 0 :(得分: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到dataLayer,就像这样:

<script>

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

</script>

我希望这就是你想要的。