[英]Arrays in php & javascript syntax issues
我對如何在json編碼之前在javascript中檢查數組之前如何在PHP中正確構造數組感到困惑。
我正在嘗試使用其網格參考(x,y)存儲對象數組
所以我在php中這樣做:
$get = mysql_query("SELECT x,y,sid FROM $table WHERE uid='1'") or die(mysql_error());
while($row = mysql_fetch_assoc($get)) {
$data[$row['x'].$row['y']] = $row['sid'];
}
//print_r($data);
$data = json_encode($data);
然后,在javascript中,我嘗試檢查給定坐標上是否存在對象,因此我嘗試執行以下操作:
for (i=0;i<tilesw;i++){ //horizontal
for (j=0;j<tilesh;j++){ // vertical
if(sdata[i.j]){
alert(sdata[i.j][sid]);
}
}
}
sdata是json編碼后的數組。
我的json編碼看起來像這樣:
{"44":"0","21":"0"}
問題是我得到了:警報行上出現Uncaught SyntaxError:Unexpected token]。
我的方法也是正確的還是有更好的方法構造數組?
您的代碼中存在JavaScript語法錯誤。 alert()
行上有一個額外的]
。
alert(sdata[i.j][sid]]);
應該
alert(sdata[i.j][sid]);
如果您實際上是試圖將值i
和j
連接起來,則還需要使用+
而不是.
,因此您將使用i.toString()+j.toString()
作為鍵而不是ij
。
將其用於二維數組的示例:
的PHP
$arr = array();
while($row = mysql_fetch_assoc($get)) {
if(!isset($arr[$row['x']])) $arr[$row['x']] = array();
$arr[$row['x']][$row['y']] = $row['sid'];
}
$data = json_encode($arr);
的JavaScript
for(var x in sdata) {
for(var y in sdata[x]) {
alert('Object found at coordinates ' + x + ',' + y + ' ' + sdata[x][y]);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.