【问题标题】:Building JSON array dynamically in PHP?在 PHP 中动态构建 JSON 数组?
【发布时间】:2016-10-19 14:16:24
【问题描述】:

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

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

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

我知道如何将它们分开,但我希望将它们作为数组添加。帮忙?

【问题讨论】:

  • 创建一个普通的array,然后在上面使用json_encode()
  • 你没有“构建 json 数组”。你用你正在使用的任何语言构建一个 NATIVE 数组。然后将该数组编码为 json。

标签: php json wordpress


【解决方案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>

我希望这是你想要的。

【讨论】:

    猜你喜欢
    • 2012-01-30
    • 2020-12-05
    • 2021-09-05
    • 1970-01-01
    • 1970-01-01
    • 2011-03-28
    • 1970-01-01
    • 2014-02-01
    • 2016-07-20
    相关资源
    最近更新 更多