javascript数组长度提供了不正确的值


javascript array length gives incorrect values

我正试图使用数据库中的postalcodes在谷歌地图中放置标记。我将php-arry提取到javascript数组中,如下所示:

 var js_array = [<?php echo '"'.implode('","', $postal).'"' ?>];
   var postal = new Array();
   var postcodes = new Array();
   for (var i=0;i<js_array.length;i++){
       postal[i] = "'"" + js_array[i] + "'"";
   }
   var postcodes = "[" + postal + "]";
   alert(postcodes.length);

数据库中只有2个邮政编码。但它显示我19岁。构造javascript数组有什么错误吗?

我用这个在谷歌地图上放标记:

map.setCenter(new GLatLng(43.65, -79.38),5);
   for (i = 0; i < postcodes.length; i++) {
      geocoder.getLatLng(postcodes[i] + ', CANADA', function (point) {         
         if (point) {
            map.addOverlay(new GMarker(point));
         }
      });
   }

这可以在地图上找到合适的标记吗?

谢谢。

使用json_encode()构建数组:

var js_array = <?php echo json_encode($postal) ?>;

我真的不知道你想用这个做什么:

var postcodes = "[" + postal + "]";

您已经将postal定义为数组。你为什么要在它周围加方括号?我想你可以删掉那行。

事实上,你的整个循环看起来没有必要。为什么要在值周围加双引号?杀死所有这些。只需:

var postcodes = <?php echo json_encode($postal) ?>;
alert(postcodes.length);

执行此操作时:

var postcodes = "[" + postal + "]";

你正在创建一个字符串。你看到的长度是字符串的长度,而不是数组的长度。

我不认为你得到的是数组的长度,实际上是字符串的长度。

var postcodes = "[" + postal + "]";

重新键入"var"将重置最初设置的变量。尝试删除它。

   var js_array = [<?php echo '"'.implode('","', $postal).'"' ?>];
   var postal = new Array();
   var postcodes = new Array();
   for (var i=0;i<js_array.length;i++){
       postal[i] = "'"" + js_array[i] + "'"";
   }
   postcodes = "[" + postal + "]";
   alert(postcodes.length);