将变量传递给php数组时避免使用引号

时间:2014-12-12 17:51:13

标签: php arrays

我(来自数据库):

<?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" }

然后&#34; google.maps.Animation.DROP&#34;在引号中。怎么避免呢? lat和lon必须在引号中。如何强制该动画不是字符串?

修改 我想实现(使用Twig和json_encode) - google.maps.Animation.DROP,这应该没有引号:

var l = {{ l|json_encode|raw }};
$(function() {
      new Maplace({
        show_markers: true,
        locations: [l],

    }).Load();

2 个答案:

答案 0 :(得分:1)

由于json必须是字符串,因此无法在json中传递javascript对象引用。

我的建议是只传递字符串"DROP",然后在javascript中使用[]对象表示法。

var animation =  google.maps.Animation[ myData.animation];

这相当于:

var animation =  google.maps.Animation[ "DROP"];

答案 1 :(得分:0)

您仍然可以在服务器端执行此操作,只需为数组循环并将动画字段从字符串转换为十进制,然后使用已编辑的数组而不是您从数据库直接接收的数组。

要在php中将类型从字符串转换为float,您可以使用: floatval函数,详细信息可以在这里找到:
http://php.net/manual/en/function.floatval.php