繁体   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