2012-04-13 2 views
1

데이터를 인코딩하는 json 배열을 만드는 while 루프가 있지만 테스트를 거쳤으나 2 행이 반환되고 두 번 반복됩니다. 내 JSson 인코딩 만 보여줍니다 데이터의 행 하나 =/ 루핑 데이터 - 루프 두 번만 하나의 데이터를로드합니다.

내 PHP입니다 :

$get = mysql_query("SELECT * FROM 
     player t1 INNER JOIN game t2 
     ON t1.sid=t2.id 
     WHERE uid='1'") or die(mysql_error()); 

    while($row = mysql_fetch_assoc($get)){ 

    echo 'looped<br/>'; //testing row count 

     $data[$row['x']] = Array(); 
     $data[$row['x']][$row['y']][0] = $row['bid']; 
     $data[$row['x']][$row['y']][1] = $row['sid']; 
     $data[$row['x']][$row['y']][2] = $row['width']; 
     $data[$row['x']][$row['y']][3] = $row['height']; 
     $data[$row['x']][$row['y']][4] = $row['offsetx']; 
     $data[$row['x']][$row['y']][5] = $row['offsety']; 

    } 

$data1 = json_encode($data);  

나는 나를 혼란 내 JSON 총 2 개 루프하지만 하나의 데이터 집합을했다 :

{"10":{"11":["1","22","1","1","0","0"]}} 

을 그것의 실종 fi 첫 번째 행은 위의 것과 같이 생성됩니다.

{"10":{"10":["1","7","2","2","0","32"]}}; 

어떻게하면 겹쳐 쓰는지 궁금합니다. 배열에 할당 된 메신저와 X : Y가 다르다고 생각했습니다.

+0

를 [ 'X'] –

+0

json으로는의에 당신이 그들을 볼 수 있습니다 @JohnnyCraig 첫 번째 숫자는 X입니다. 두 번째 숫자는 Y입니다. – Sir

+0

존재하는 행에 x 값과 누락 된 행이 동일하므로 두 번째 행이 첫 번째 행을 파기합니다. – DCoder

답변

1
while($row = mysql_fetch_assoc($get)){ 
    $data[$row['x']] = Array(); 
} 
아직 존재하지 않는 경우에만 그것을 설정해야

: $ 행의 가능한 값이 무엇인지

while($row = mysql_fetch_assoc($get)){ 
    if(!array_key_exists($row['x'], $data)) { 
     $data[$row['x']] = Array(); 
    } 
} 
+0

완벽한 :) 감사합니다! – Sir

1

루프 밖에서 $ data 배열을 할당하고 할당하십시오.

+0

하지만 $ row [ 'x']는 루프가 끝날 때까지 설정되지 않습니다. – Sir

관련 문제