1

我有一个循环产品及其数据的 php 循环:

<?php foreach ($this->products as $product) { ?>

<script type=text/javascript>
product = {
    id:   $product->virtuemart_product_id,
    name: $product->product_name
};
</script>

<?php } ?>

数据包含有关 $product 的产品信息,如下所示:

  • $product->virtuemart_product_id
  • $product->product_name

是否可以在每个循环中将数据添加到现有的 javascript 数组或对象中?基本上它将循环的数据添加到javascript数组或产品中。

任何帮助,将不胜感激 :)

4

7 回答 7

8

有一个更好更干净的方法,使用PHPjson_encode

<?php
  $data = array();
  foreach( $this->products as $product ) {
    $data[] = array(
      "id"    =>  $product->virtuemart_product_id,
      "name"  =>  $product->product_name
    );
  }
?>

HTML

<script type=text/javascript>
  var product = <?php echo json_encode( $data ) ?>;
</script>

你也可以使用

var product = <?php echo json_encode( $product ) ?>;

因此,当您想product使用 javascript 访问时,您的代码将是

<script type="text/javascript">
  for( i in product ) {
    console.log( product[i] );
  }
</script>
于 2013-07-25T10:36:21.520 回答
2

您可以使用 json 使用 php 函数json_encode

<script type='text/javascript'>
<?php
    $products = $this->products;
    $js_array = json_encode($products);
    echo "var products = ". $js_array . ";\n";
?>
</script>

做同样事情的另一种方法:

<script type="text/javascript">
    var products= <?php echo json_encode($products); ?>;
    for(var i=0;i<n;i++)
    {
        alert(products[i]);
    }
</script>
于 2013-07-25T10:35:28.717 回答
2

你的意思是这样吗?:

<script type=text/javascript>
  var x, productArray = [];
<?php foreach ($this->products as $product) { ?>

  x = {
      id:   <?php print $product->virtuemart_product_id; ?>,
      name: <?php print $product->product_name; ?>
  };

  productArray.push(x);

<?php } ?>
</script>
于 2013-07-25T10:36:23.623 回答
1

那个怎么样:

<script type=text/javascript>
var products= array();
<?php foreach ($this->products as $product) { 
 echo "product.push({
            id:   $product->virtuemart_product_id,
            name: $product->product_name
        });" ;
?>
</script>
于 2013-07-25T10:40:46.747 回答
0

与其在循环中使用脚本标记,不如为每个产品构建一个包含 id/name 的 PHP 数组,然后在循环之外,在其上使用 json_encode()。然后将其提供给您的 JavaScript。

于 2013-07-25T10:36:26.287 回答
0

使用.push()您可以将元素附加到数组,如下所示:

var products = [{
    name: 'Product 1',
    id: 1
}, {
    name: 'Product 2',
    id: 2
}]

因此,如果您想products从循环中将元素附加到数组:

products.push({
    id:    <?php echo $product->product_id; ?>,
    name: '<?php echo $product->product_name; ?>'
});
于 2013-07-25T10:36:36.847 回答
0

我的解决方案:

<?php foreach ($this->products as $product) { ?>
    <script type=text/javascript>
        product = {
           id:   <?=json_encode($product->virtuemart_product_id)?>,
           name: <?=json_encode($product->product_name)?>
        };
    </script>
<?php } ?>
于 2013-07-25T10:38:00.243 回答