Я пытаюсь создать массив объектов JS из массива PHP, но я изо всех сил пытаюсь найти способ вставки запятых между каждым объектом.
Вот что я пытаюсь вывести:
var things = [ { a: "foo", b: "bar" }, // Comma on this line { a: "moo", b: "car" } // No comma on this line ];
И вот что я до сих пор:
var things = [ <?php foreach ($things as $thing): ?> { a: "<?php echo $thing->getA(); ?>", b: "<?php echo $thing->getB(); ?>" } <?php endforeach; ?> ];
Я полагаю, я мог бы прибегнуть к чему-то уродливому, как к примеру if
который выполняется только один раз:
<?php $i = 1; if ($i == 1) { echo '{'; $i++; } else { echo ',{'; } ?>
Разве нет более чистого / лучшего способа сделать это?
Что-то вроде…
$JSONData = json_encode($YourObject);
Существует также декодирование …
$OriginalObject = json_decode($JSONData);
Если у вас есть массив PHP и вы хотите что-то использовать в JavaScript, вы можете использовать json_encode()
Почему вы не используете json_encode ?
<?php $arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5); echo json_encode($arr); ?>
Вышеприведенный пример выводит: {"a": 1, "b": 2, "c": 3, "d": 4, "e": 5}
Создайте требуемую структуру в виде массивов PHP, а затем используйте json_encode (http://php.net/manual/en/function.json-encode.php).
$plainThing = array(); foreach ($things as $thing) { $plainThing[] = array('a' => $thing.getA(), 'b' => $thing.getB()); } echo json_encode($plainThing);