【问题标题】:Generating a javascript array in php with "Foreach" Loop使用“Foreach”循环在php中生成一个javascript数组
【发布时间】:2011-09-23 20:51:53
【问题描述】:

所以我用for 循环在php 中生成一个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 对象的逗号?

【问题讨论】:

    标签: php javascript foreach


    【解决方案1】:

    你应该使用json_encode()

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

    【讨论】:

    • 是的,我刚刚在另一个问题上看到了。谢谢!
    【解决方案2】:

    ThiefMaster 明白了,但要扩展答案:

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

    【讨论】:

      【解决方案3】:

      以后,如果你再次遇到这种类型的循环问题(不管它是否与 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 ?>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-16
        • 2020-08-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多