Javascript循环和数组

问题描述:

我遇到了以下循环的问题,它会为变量newLat[i]生成空结果。但是,当我直接填充newLat[0](在最后2行)它工作正常。有什么想法吗?Javascript循环和数组

PHP:

$sql = "SELECT `id`, `name`, `lat`, `lng` FROM `markers` " ; 
$result = $dbc->query($sql); 
$hits = $result->num_rows ; 
echo "<br /> Records = " ; 
echo "$hits <br />"; 
while($row = $result->fetch_assoc()) { 
    $MarkerID[] = $row['id']; 
    $MarkerName[] = $row['name']; 
    $MarkerLat[] = $row['lat']; 
    $MarkerLng[] = $row['lng']; 
}  

和Javascript:

var myhits = <?php echo json_encode($hits); ?>; 
var newLat = new Array (myhits);  

for (var i = 0; i < myhits; i++) { 
    newLat[i] = <?php echo json_encode($MarkerLat[i]); ?>; 
    document.write (newLat[i]); 
} 

newLat[0] = <?php echo json_encode($MarkerLat[0]); ?>; 
document.write (newLat[0]); 

for (var i = 0; i < myhits; i++) { 
    newLat[i] = <?php echo json_encode($MarkerLat[i]); ?>; 
    document.write (newLat[i]); 
} 

你试图在您的JavaScript循环PHP代码。这是不可能的,因为在服务器上评估所有的PHP,而JS在客户端上。打开你的网页和“查看源代码” - 你会发现那里可能没有任何东西。

你必须找出另一种方法来做到这一点;或许以hits的方式将$MarkerLat发送给客户端。

不能在不同的语言块内使用FOR指针:

for (var i = 0; i < myhits; i++) { 
    newLat[i] = <?php echo json_encode($MarkerLat[i]); ?>; 
    document.write (newLat[i]); 
} 

您正在尝试使用JavaScript我一个PHP块中。不仅这个PHP块执行了这一点,它不知道该怎么处理我。它将为0.

在通过循环运行之前,您需要将$MarkerLat[i]的内容转储到JavaScript数组中。