2016-03-06 98 views
-1

我遇到了以下循環的問題,它會爲變量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]); 

回答

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發送給客戶端。

0

不能在不同的語言塊內使用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數組中。