使用“Foreach”循环在php中生成javascript数组

时间:2011-06-27 21:51:04

标签: php javascript foreach

所以我在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对象的逗号?

3 个答案:

答案 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 ?>