开发者

Generating a javascript array in php with "Foreach" Loop

开发者 https://www.devze.com 2023-03-15 23:40 出处:网络
So I\'m generating a javascript array of objects in php with a for loop.My code looks somewhat like this:

So I'm generating a javascript array of objects in php with a for loop. My code looks somewhat like this:

<script type="text/javascript">

var 开发者_Python百科items = [ 
<?php foreach($items as $item): ?>
     {
        "title" : "<?php echo $item->title ?>",
        "image" : "<?php echo $item->getImage()?>",
      }, 
 <?php  endforeach ?>
];

</script>

This code will not work, since I end up with an extra comma at the end of my javascript array. Is there an elegant way to deal with that comma that separates the javascript objects?


You should use json_encode().

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


ThiefMaster's got it, but to expand on the answer:

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

echo json_encode($arr);


For the future, in case you run into this type of looping problem again (regardless if it's json related), you can use a boolean to detect if a comma is needed:

<?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 ?>
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号