Создание массива javascript в php с помощью цикла «Foreach» - PullRequest
2 голосов
/ 28 июня 2011

Итак, я генерирую массив объектов javascript в php с циклом for.Мой код выглядит примерно так:

<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 ]

10 голосов
/ 28 июня 2011

Вы должны использовать json_encode().

<?php
    $jsItems = array();
    foreach($items as $item) {
        $jsItems[] = array(
            'title' => $item->title,
            'image' => $item->getImage()
        );
    }
    echo 'var items = '.json_encode($jsItems).';';
?>
0 голосов
/ 28 июня 2011

В будущем, если вы снова столкнетесь с такой проблемой зацикливания (независимо от того, связана ли она с 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 ?>
0 голосов
/ 28 июня 2011

У ThiefMaster есть это, но, чтобы расширить на ответ:

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

echo json_encode($arr);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...