所以我在PHP中使用for
循环生成一个javascript对象数组。我的代码看起来有点像这样:
<script type="text/javascript">
var items = [
<?php foreach($items as $item): ?>
{
"title" : "<?php echo $item->title ?>",
"image" : "<?php echo $item->getImage()?>",
},
<?php endforeach ?>
];
</script>
这段代码不起作用,因为我的javascript数组末尾有一个额外的逗号。是否有一种优雅的方式来处理分隔javascript对象的逗号?
答案 0 :(得分:10)
您应该使用json_encode()
。
<?php
$jsItems = array();
foreach($items as $item) {
$jsItems[] = array(
'title' => $item->title,
'image' => $item->getImage()
);
}
echo 'var items = '.json_encode($jsItems).';';
?>
答案 1 :(得分:0)
ThiefMaster得到了它,但要扩展答案:
$arr = array()
foreach ($items as $item) {
$arr[] = array('title' => $item->title, 'image' => $item->getImage());
}
echo json_encode($arr);
答案 2 :(得分:0)
对于将来,如果再次遇到这种类型的循环问题(无论它是否与json相关),您可以使用布尔值来检测是否需要逗号:
<?php $firstTime = true ?>
<?php foreach($items as $item): ?>
<?php
if (!$firstTime):
echo ', ';
else:
$firstTime = false;
endif;
?>
{
"title" : "<?php echo $item->title ?>",
"image" : "<?php echo $item->getImage()?>",
}
<?php endforeach ?>