2012-04-13 8 views
1

Ich habe eine while-Schleife, die ein Array vor JSON Codierung der Daten erstellt, aber obwohl ich es getestet habe und ich bekomme 2 Zeilen zurückgegeben und es zweimal wiederholt..my JSON encode nur zeigt einer der Reihen von Daten =/Looping Daten - Schleifen zweimal lädt nur eine Daten

Das ist mein 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);  

hatte ich 2 Schlaufen insgesamt aber nur ein Datensatz für meine json, die mich verwirrt:

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

Es fehlt der fi erste Reihe von Daten, die als eine dieser aswell von geschaffen würde oben:

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

Ich frage mich, ob im etwas überschreiben, wie? Ich dachte, es würde Arrays nicht zugewiesen werden und ihre X: Y sind anders.

+0

, was die möglichen Werte von $ row ist [ ‚x‘] –

+0

@JohnnyCraig Sie können sehen, in der json das ist erste Zahl ist X zweite Zahl ist Y :) – Sir

+0

Es erscheint die Werte von 'x' in der Zeile, die existiert und die Zeile, die fehlt, sind die gleichen, so zerstört die zweite Zeile die erste. – DCoder

Antwort

1
while($row = mysql_fetch_assoc($get)){ 
    $data[$row['x']] = Array(); 
} 

Sie sollten es nur gesetzt, wenn es noch nicht existiert:

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

Perfekt :) danke! – Sir

1

Zuordnen und zuweisen Sie Ihre $ Daten-Array außerhalb der Schleife.

+0

Aber $ row ['x'] wird erst in der Schleife gesetzt. – Sir