2012-03-08 3 views
0

자바 스크립트에서 내 json 인코딩 전에 인코딩을 올바르게 배열하는 방법에 대해 혼란스러워했습니다.PHP 및 자바 스크립트 문법 문제의 배열

나는 그래서 내가 PHP에서이 작업을 수행

자신의 그리드 참조 (X, Y)와 객체의 배열을 저장하기 위해 노력하고있어이 :

$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); 

자바 스크립트에서 나는 다음 있는지 확인하려고 객체가 주어진 좌표에 있으므로 다음을 시도하십시오.

for (i=0;i<tilesw;i++){ //horizontal 
    for (j=0;j<tilesh;j++){ // vertical 

     if(sdata[i.j]){ 
      alert(sdata[i.j][sid]); 
     } 
      } 
     } 

json 인코딩 후 sdata는 내 배열입니다.

내 JSON 인코딩은 다음과 같습니다 catch되지 않은 구문 에러 : 예기치 않은 토큰] 경고 라인을

{"44":"0","21":"0"} 

문제는 내가 얻을 수있다.

또한 내 접근법이 맞습니까? 아니면 내 배열을 구성하는 더 좋은 방법이 있습니까?

+2

을 두 가지 차원 배열이 사용

예? 잘못된 자바 스크립트 문법입니다. –

+0

i와 j는 for 루프에서 생성 된 두 개의 변수이므로 다음을 확인합니다. sdata [10] true. sdata [10]의 값을 반향합니다. 이것은 i가 1이고 j가 0 인 경우의 예입니다. – Sir

+0

Ahh 좋습니다. PHP 문자열 연결 구문을 사용하고 있습니다. javascript에서는'sdata [i.toString() + j.toString()]'(또는 적당한 팩시밀리)를 사용하고 싶을 것입니다. –

답변

1

코드에 JavaScript 구문 오류가 있습니다. alert() 행에는 ]이 추가로 있습니다.

alert(sdata[i.j][sid]]); 

당신이 실제로 당신은 또한 .보다는 +를 사용 할 필요가 ji을 연결하려고하고있는 경우 키로 i.toString()+j.toString()를 사용하기보다는 것이다, 그래서

alert(sdata[i.j][sid]); 

을이어야한다 i.j.

PHP`달성하기 위해 시도 i.j` 무엇

$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); 

자바 스크립트

for(var x in sdata) { 
    for(var y in sdata[x]) { 
     alert('Object found at coordinates ' + x + ',' + y + ' ' + sdata[x][y]); 
    } 
} 
+0

Ah yeh 나는 실수를 고쳤다. :) 고마워. - 일단 나, 그리고 j가 배열을 만난다해도 여전히 나에게 경고하는 것 같지 않지만./ – Sir

+0

@Dave 나는 나의 대답을 업데이트했다. – jprofitt

+0

좋아요. 나는 아직 경고가 발생하지 않았 음을 편집했습니다./json encode는 i 4와 j 4에 하나가 있지만 경고를 생성하지 않는 것 같다고 말했습니다./ – Sir