2016-03-06 3 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]); 
} 

Вы пытаетесь включить PHP код в цикле JavaScript. Это просто невозможно, так как весь PHP оценивается на сервере, а JS - на клиенте. Откройте свою веб-страницу и «просмотрите источник» - вы увидите, что в этой строке, вероятно, нет ничего.

Вам нужно будет выяснить другой способ сделать это; возможно, отправить $MarkerLat клиенту так же, как вы делаете hits.

0

Вы не можете использовать для указателя внутри другого блока языка:

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

Вы пытаетесь использовать JavaScript я внутри PHP блока. Этот блок не только выполнил блок PHP, но и не знал, что делать с этим i. Это будет 0.

Вам нужно сбросить содержимое $MarkerLat[i] в массив JavaScript, прежде чем запускать его через ваш цикл.

Смежные вопросы