在PHP中动态构建JSON数组


Building JSON array dynamically in PHP?

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

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

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

我知道如何分开它们,但我希望它们作为一个数组添加。帮助吗?

所以我理解你想要这样的东西:

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>

我希望这是你想要的