簡體   English   中英

PHP和JavaScript語法中的數組

[英]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]);  

如果您實際上是試圖將值ij連接起來,則還需要使用+而不是. ,因此您將使用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.

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