簡體   English   中英

將2d php數組轉換為2d javascript數組時遇到麻煩

[英]trouble converting 2d php array to 2d javascript array

我確實做了一個我認為不是將代碼二維數組從PHP傳遞到Javascript的非代碼審查傳遞hack。 外部數組具有元素,並且每個元素都是一個數組。

每個內部數組都由數據庫記錄中的4個字段組成。 內部數組元素是:城鎮名稱,緯度和經度以及整數索引。

代碼正常嗎? 是。 但是我討厭這樣的事實,即我99%的人相信,作為一個相當原始的初學者,有一種更好的方法來創建然后將2d數組從PHP傳遞到Javascript,我需要知道如何做,因為我一起破解了這一點。通過反復試驗和閱讀大量的SO帖子,而並非通過先驗的專業知識,智慧或信心來實現。

每個外部數組元素都是(需要)如下所示的數組:

頂部數組:

[0] = [“ Campbell”,37.21,122.0,0]

[1] = [“森尼韋爾”,37.54,121.37,1]

[2] = [“ Saratoga”,37.24,122.001,2]

[3] = ......等 等等...........

請注意,第二級數組具有一個字符串,然后是一個浮點數,然后是另一個浮點數,然后是整數。

這是PHP中將我的數據庫記錄打包到2-d PHP數組中的代碼(錯誤檢查,為清楚起見,未顯示其他代碼):

 $result = mysql_query($query);
 $numrows = mysql_num_rows($result);

 $outerArray = array();

 for($i = 0; $i < $numrows;  $i++)
 {
   $theRow = mysql_fetch_row($result);

   $city = $theRow[1];
   $lat = $theRow[22];
   $lng = $theRow[23];

   $outerArray[] = array($city, $lat, $lng, $i);
 }
 $latLngValues = json_encode($outerArray);

 // EDIT: ADDED TO TELL ME WHAT THIS 2d ARRAY ACTUALLY LOOKS LIKE
 var_dump($latLngValues);

在網頁的onload處理程序中,我調用javascript函數並傳遞此數組:

 <body onload='handleLoad(<?php echo $latLngValues ?>)'>

這是我的handleLoad():

 function handleLoad( latLng2dArray )
 {

   for (var i = 0; i < latLng2dArray.length; i++) 
   {

     var town = latLng2dArray[i];

     var latitude = Number(town[1]);
     var longitude = Number(town[2]);

     // I USE THE DATABASE RECORD'S NUMBERS TO CREATE A Gmaps LatLng
     var myLatLng = new google.maps.LatLng(latitude, longitude);

   }

可能有一種更清潔和/或更有效的方法來執行此操作。

例如,我發現如果我不使用Number()函數將數據庫編號“強制”為數字,則對“ new google.maps.LatLng(latitude,longitude) ”的調用給了我NaN

因此,我希望更多有經驗的人可以讓我知道一種更清潔的方式。 盡管這段代碼有效,但我還是通過反復試驗來破解它一天。

編輯:我在我的php代碼中使用了var_dump()來查看2d數組“ $ latLngValues”在傳遞給我的onload處理程序之前是什么樣的,而“ $ latLngValues”看起來是這樣的:

  string(133) "[["Campbell","37.2724","-122",0],["Sunnyvale","37.2724","-122",1],["LosGatos","37.2607","-122",2],["Saratoga","37.2607","-122.046",3]]" 

我想指出這一點:在我的數據庫中,我使用的數據類型是經度和緯度的“浮動”。 不知道在正確對待整數索引而不是字符串的情況下,var_dump如何/為什么將它們顯示為字符串(而不是浮點數)。

沒有人提供更好的編碼策略,因此,目前,我將使用上面的現有代碼-它雖然很漂亮,但是可以工作。 如果找到更正確的方法,我會回發。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM