JavaScript中的PHP-foreach

JavaScript中的PHP-foreach,javascript,php,google-maps,Javascript,Php,Google Maps,我正在使用以下代码(JavaScript中的PHP)。foreach正在工作,当我检查控制台时,它正在回显结果,但是map脚本不工作 var t = []; var x = []; var y = []; var h = []; <?php foreach($obj->data as $mapMarkers) { echo "t.push('" . json_encode($mapMarkers->AreaName . "');\n"; echo "x.pus

我正在使用以下代码(JavaScript中的PHP)。foreach正在工作,当我检查控制台时,它正在回显结果,但是map脚本不工作

var t = [];
var x = [];
var y = [];
var h = [];

<?php foreach($obj->data as $mapMarkers) {
    echo "t.push('" . json_encode($mapMarkers->AreaName . "');\n";
    echo "x.push(" . $mapMarkers->Longitude . ");\n";
    echo "y.push(" . $mapMarkers->Latitude . ");\n";
    echo "h.push('" . $mapMarkers->FullAddressBR . "');\n";
} ?>

var i = 0;
for ( item in t ) {
    var m = new google.maps.Marker({
        map:       google_map,
        animation: google.maps.Animation.DROP,
        title:     t[i],
        position:  new google.maps.LatLng(x[i],y[i]),
        html:      h[i]
    });

    google.maps.event.addListener(m, 'click', function() {
        info_window.setContent(this.html);
        info_window.open(google_map, this);
    });
    i++;
}
var t=[];
var x=[];
变量y=[];
var h=[];
试试这个:

<?php foreach($obj->data as $mapMarkers) {?>
    t.push(<?echo "'" . json_encode($mapMarkers->AreaName . "'" ?>));
    x.push(<?echo "'" . $mapMarkers->Longitude . "'" ?>);
    y.push(<?echo "'" . $mapMarkers->Latitude . "'" ?>);
    h.push(<?echo "'" . $mapMarkers->FullAddressBR . "'" ?>);
<? } ?>

t、 推送(尝试以下操作:

<?php foreach($obj->data as $mapMarkers) {?>
    t.push(<?echo "'" . json_encode($mapMarkers->AreaName . "'" ?>));
    x.push(<?echo "'" . $mapMarkers->Longitude . "'" ?>);
    y.push(<?echo "'" . $mapMarkers->Latitude . "'" ?>);
    h.push(<?echo "'" . $mapMarkers->FullAddressBR . "'" ?>);
<? } ?>


t、 push(您应该做的是创建一个php对象(好吧,让我们把它放在一个数组中*);您回显该对象的json_编码;然后javascript可以直接读取它

原因是您可以将php与javascript分开

大概是

<?php 
$my_array = array();
foreach($obj->data as $mapMarkers) {
  $my_array.push(array(
    't'=>$mapMarkers->AreaName,
    'x'=>$mapMarkers->Longitude,
    'y'=>$mapMarkers->Latitude,
    'h'=>$mapMarkers->FullAddressBR
  ));
}
echo 'var my_data = ' . json_encode($my_array) .';';
?>

(*php不知道数组真正应该是什么。大多数php数组都是真正的对象)

您应该做的是创建一个php对象(好吧,让我们把它放在数组中*);您回显该对象的json_编码;然后javascript可以直接读取它

原因是您可以将php与javascript分开

大概是

<?php 
$my_array = array();
foreach($obj->data as $mapMarkers) {
  $my_array.push(array(
    't'=>$mapMarkers->AreaName,
    'x'=>$mapMarkers->Longitude,
    'y'=>$mapMarkers->Latitude,
    'h'=>$mapMarkers->FullAddressBR
  ));
}
echo 'var my_data = ' . json_encode($my_array) .';';
?>

(*php不知道数组真正应该是什么。大多数php数组实际上是对象)

解决了它!我的原始代码运行得很好,我只是把long和lat的顺序搞错了。我的不好!

解决了它!我的原始代码运行得很好,我只是把long和lat的顺序搞错了。我的不好!

这太干净了。
json\u encode
是一种PHP方法。你也使用了错误的连接运算符。干净gh可能是,尽管有错误,但我怀疑这是实际问题的根源。@harris,我的错,对不起。现在它被更正了。这更干净。
json_encode
是一个PHP方法。另外,您使用了错误的串联运算符。尽管可能更干净,尽管有错误,但我怀疑这是实际问题的根源。@harris,我的错,抱歉。现在它是正确的。您确定您的变量
google_map
定义正确并且在范围内可用吗?因此,您使用变量作为索引和循环-这意味着迭代对象的属性-来构建您自己的循环以迭代数组的条目吗?可能重复@FrancescoCasula我不知道认为它是重复的。循环应该提供期望的结果,OP确实声明他已经检查过了。你确定你的变量
google\u map
定义正确并且在范围内可用吗?因此,你使用一个变量作为索引和一个循环(意指迭代对象的属性)来构建你的own循环迭代数组的条目?可能是@FrancescoCasula的重复我不认为它是重复的。循环应该提供所需的结果,OP声明他已经检查过了。