将php循环数据添加到js数组中
Adding php loop data to js array
我有一个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->virtualmart_product_id
- $product->product_name
是否可以在每个循环中将数据添加到现有的javascript数组或对象中?基本上,它会将循环的数据添加到javascript数组或产品中。
如有任何帮助,我们将不胜感激:)
有一种更好、更干净的方法,使用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>
您可以使用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>
你的意思是这样的?:
<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>
那呢:
<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>
不要在循环中使用脚本标记,而是为每个产品构建一个包含id/name的PHP数组,然后在循环外对其使用json_encode()。然后将其提供给JavaScript。
使用.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; ?>'
});
我的解决方案:
<?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 } ?>
相关文章:
- JS数组-检查对象值是否重复
- 将JS数组附加到变量并显示它
- 正在尝试将JSON文件放入JS数组
- 删除JS数组中的最小数字
- 调用laravel{{action(Controller@method}}通过传递vue.js数组中的变量
- 如何将JS数组添加到Meteor自动表单条目中
- 了解JS数组和拼接
- JS数组称为“;name”;行为怪异
- 在js数组中不断循环并暂停
- 根据范围过滤角度.js数组
- 循环访问 JS 数组 + 数组属性
- 为什么当我在JS数组上调用.toString时得到“对象对象”
- Ember.js数组控制器计算属性的复选框
- 我的JS数组打印只显示结束值
- 如何在AngularJs中将json数组转换为js数组
- JS数组无理由地传递值更改
- 是否可以引用JS数组/对象中的另一个元素
- 将jQuery事件函数应用于新的Knockout.js数组元素
- 通过多列和多个值过滤angular js数组
- 在js数组中查找下一个和上一个键