繁体   English   中英

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

[英]Generating a javascript array in php with “Foreach” Loop

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

你应该使用json_encode()

<?php
    $jsItems = array();
    foreach($items as $item) {
        $jsItems[] = array(
            'title' => $item->title,
            'image' => $item->getImage()
        );
    }
    echo 'var items = '.json_encode($jsItems).';';
?>

ThiefMaster得到了它,但扩展答案:

$arr = array()
foreach ($items as $item) {
    $arr[] = array('title' => $item->title, 'image' => $item->getImage());
}

echo json_encode($arr);

对于将来,如果再次遇到这种类型的循环问题(无论它是否与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 ?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM