将php循环数据添加到js数组

时间:2013-07-25 10:26:44

标签: php javascript arrays foreach javascript-objects

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

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

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

<?php } ?>

数据包含有关产品的信息,而非产品如下:

  • $产品 - &GT; virtuemart_product_id
  • $产品 - &GT; PRODUCT_NAME

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

任何帮助将不胜感激:)

7 个答案:

答案 0 :(得分:8)

有一种更好,更干净的方式,使用json_encode
PHP

<?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 ) ?>;

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

<script type="text/javascript">
  for( i in product ) {
    console.log( product[i] );
  }
</script>

答案 1 :(得分:2)

您可以使用php函数json_encode

来使用json
<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>

答案 2 :(得分: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>

答案 3 :(得分: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>

答案 4 :(得分:0)

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

答案 5 :(得分: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; ?>'
});

答案 6 :(得分: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 } ?>