class Map
{
public $Id;
public $longitudes;
public $latitudes;
public $lat_init;
public $lng_init;
public static function createMap($Id){
global $latitude, $longitude;
$dbh = Database::connect();
$query = "SELECT * FROM `cartes` WHERE Id=? ";
$sth = $dbh->prepare($query);
$sth->setFetchMode(PDO::FETCH_CLASS, 'Map');
$sth->execute(array($Id));
if ($sth->rowCount() === 0) return NULL;
$map=$sth->fetch();
$sth->closeCursor();
$lat=$map->latitudes;
$lng=$map->longitudes;
$latitude=unserialize($lat);
var_dump($latitude);
$longitude=unserialize($lng);
echo'<script type="text/javascript">'
,'var lat = json_encode($latitude);
var lng = json_encode($longitude);
draw(lat,lng);
'
,'</script>';
}
}
<?php
$dbh=Database::connect();
Map::createMap(6);
?>
当我执行此代码时,会出现以下错误:&#34; $ latitude未定义&#34;。 var_dump($ latitude)没问题。我认为剧本不能识别纬度,但我不知道为什么。有帮助吗? 感谢
答案 0 :(得分:6)
如果您将其编码为JSON,则需要正确地将其包装在引号中(您无法在字符串内调用函数):
echo '<script type="text/javascript">
var lat = '. json_encode($latitude). ';
var lng = '. json_encode($longitude). ';
draw(lat,lng);
</script>';
答案 1 :(得分:4)
使用PHP,单引号用于字符串文字,并将使用变量的名称而不是其值。如果要插值(将变量的值插入字符串),则需要使用双引号。
echo '<script type="text/javascript">',
"var lat = ". json_encode($latitude) .";
var lng = ". json_encode($longitude) .";
draw(lat,lng);",
'</script>';
更新:我在某种程度上忽略了关于json_encode
作为PHP调用的部分......所以插值问题是一个没有实际意义的问题,因为你只需要将函数的输出连接到字符串中。
答案 2 :(得分:1)
在引用的字符串中不调用函数。你需要连接它:
echo '<script type="text/javascript">
var lat = ' . json_encode($latitude) . ';
var lng = ' . json_encode($longitude) . ';
draw(lat,lng);
';