javascript 中的变量 while 不断重置

Variables in javascript while keeps resetting

我在这段代码中有一个 while 循环:

while (i < 5)
{
var pos = new google.maps.LatLng(<?php echo json_encode($lat[$b]); ?>,<?php echo json_encode($lon[$b]);?>);
var marker = new MarkerWithLabel({
    position: pos,
    draggable: true,
    raiseOnDrag: true,
    map: map,
    icon: 'icon.png',
    labelContent: <?php echo json_encode($unidad[$b]); $b=$b+1;?>,
    labelAnchor: new google.maps.Point(22, 0),
    labelClass: "labels", // the CSS class for the label
    labelStyle: {opacity: 0.75},
    });
    google.maps.event.addListener(marker, "click", function (e) { iw1.open(map, this); });
    i++;
}

现在,让我解释一下代码以及发生了什么。首先,我使用 JavaScript 和 PHP,因为我需要来自数据库的一些信息,要添加地图(Google 地图),我需要使用 javascript。

在第一轮中,$b 的值从 0 变为 1,但经过第一个循环后,该值再次重置为 0。它不像 $b 默认取 0,因为如果我在 while 循环之前声明 $b=6 那么 $b 的值将始终为 6 和 7。

我做错了什么?或者我应该怎么做?任何帮助将不胜感激。由于英语不是我的第一语言,如有任何错误,请原谅。

这是我的新代码,我只是将数组从 php 传递到 javascript(我不知道这么简单)这是新代码:

var lat = <?php echo json_encode($lat)?>;
var lon = <?php echo json_encode($lon)?>;
var unidad = <?php echo json_encode($unidad)?>;

while (i < <?php echo json_encode($a)?>) 
{

var pos = new google.maps.LatLng(lat[i],lon[i]);
    var marker = new MarkerWithLabel({
       position: pos,
       draggable: true,
       raiseOnDrag: true,
       map: map,
       icon: 'icon.png',
       labelContent: unidad[i],
       labelAnchor: new google.maps.Point(22, 0),
       labelClass: "labels", // the CSS class for the label
       labelStyle: {opacity: 0.75},


     });

您正在硬编码 $lat[$b] 从 PHP 到 javascript 文字的值。 结果是这样的:

new google.maps.LatLng("lat of b",

您应该将 php 变量编码为 javascript 变量而不是文字:

var lat = <?php echo json_encode($lat); ?>;
var b = <?php echo json_encode($b); ?>;
while(i<5) {
 ... actual code

从 PHP 开始,您将创建一个 javascript 变量而不是文字。

请记住,页面经过 2 个阶段。

  1. 计算 PHP 代码的服务器端渲染。
  2. javascript 评估的客户端代码。

您很可能还需要为 $lat 创建一个 javascript 变量。