我在javascript中使用这个for循环,我正在尝试使用从数据库中检索的数据在google地图上创建多边形。我的问题在于我在javascript中包含了php,每次for循环运行时,$ i的值永远不会改变。谁都可以帮忙??
enter code here
<?php $i = 0 ?>;
for(i =0; i< <?=$length?>; i++)
{
var coordinates = "<?=$districtsarray[$i]['coords']?>";
var coordinates = coordinates.substr(1, coordinates.length-2).split("),(");
var souniCoordinates = coordinates.map(function(pointString){
var latlon = pointString.split(", ");
return new google.maps.LatLng(latlon[0], latlon[1]);
});
var SouniCoords = [souniCoordinates];
<?php echo $districtsarray[$i]['name']?> = new google.maps.Polygon({
paths: SouniCoords,
strokeColor: '#383838 ',
strokeOpacity: 0.8,
strokeWeight: 2,
fillColor: '#CD5C5C ',
fillOpacity: 0.5
});
<?php echo $districtsarray[$i]['name']?>.setMap(map);
<?php $i=$i+1;?>
}
</script>
<?php
答案 0 :(得分:0)
在我看来,像这样混合PHP和JavaScript会使代码难以阅读和维护。我建议使用PHP函数json_encode(http://php.net/manual/en/function.json-encode.php)将PHP数据结构转换为JSON并在一个地方回显。
然后使用JSON.parse()https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse将字符串转换为JavaScript对象。
所以它可能看起来像这样:
var data = JSON.parse(<?php echo json_encode($data); ?>);
然后在此之后才使用JavaScript:)。
答案 1 :(得分:0)
步骤1)将php变量的值转换为像这样的
的javascript变量var javascriptarray = JSON.parse('< json_encode($districtsarray); ?>');
步骤2)现在使用“javascriptarray
”&amp;循环中的javascript变量"i"
可以像这样访问其元素
var coordinates = javascriptarray[i]['coords'];
答案 2 :(得分:0)
首先,请理解以上是不好的做法,因为它使维护/调试处于尴尬和不可能之间。如果您坚持这样做,更好的选择是使用字符串插值:
<?php
echo <<< END
//always use K&R style for js because of automatic ; insertion:
for (var i=0, i < $length, i++) {
//do stuff
}
END
?>
你写它的方式&#39;我&#39;在javascript中没有定义,递增undefined没有有意义的结果。由于这些问题,你不应该像这样混合javascript和php。更好的选择是:
$.getJSON('myPHP.php', function(response) {
var data = JSON.parse(response);
for (index in data) {
var row = data[index]
//do stuff
}
})
这使用jquery虽然使用原始js实现这一点当然是可能的,但它只需要更多的代码。有php脚本&#39; myPHP&#39;返回一个包含db。
记录的数组