У меня есть (из базы данных):
<?php
$l = array();
$l['lat'] = $row['lat']; //51.507351
$l['lon'] = $row['lon']; //-0.127758
$l['animation'] = $row['animation']; //google.maps.Animation.DROP - stored without quotes in database
?>
Если я var_dump ($ l):
array(3) { ["lat"]=> string(9) "51.507351" ["lon"]=> string(9) "-0.127758" ["animation"]=> string(26) "google.maps.Animation.DROP" }
Затем "google.maps.Animation.DROP" находится в кавычках. Как этого избежать? lat и lon должны быть в кавычках. Как заставить эту анимацию не строку?
Изменить: я хочу достичь этого (используя Twig и json_encode) - google.maps.Animation.DROP, и это должно быть без кавычек:
var l = {{ l|json_encode|raw }};
$(function() {
new Maplace({
show_markers: true,
locations: [l],
}).Load();
Вы не можете передать ссылку на объект javascript таким образом в json, поскольку json должен быть строкой.
Мое предложение состояло в том, чтобы просто передать строку "DROP"
а затем в javascript использовать []
объектную нотацию.
var animation = google.maps.Animation[ myData.animation];
Это будет эквивалентно:
var animation = google.maps.Animation[ "DROP"];
Вы все еще можете сделать это на стороне сервера, просто петля для массива и отбросить поле анимации от строки до десятичной, а затем использовать отредактированный массив, а не тот, который вы непосредственно получаете из базы данных.
Чтобы преобразовать тип из строки в float в php, вы можете использовать функцию floatval: подробности можно найти здесь:
http://php.net/manual/en/function.floatval.php