2012-04-13 86 views
1

我有一個while循環在json編碼數據之前創建一個數組,但儘管我已經測試了它,並且我得到2行返回並且它循環兩次..my json只編碼顯示數據行的一個=/循環數據 - 循環兩次只加載一個數據

這是我的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);  

我曾在總共2圈,但只有一個數據集爲我的JSON這是混淆了我:

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

它錯過了fi第一行數據,這將創建此以及上面的那個:

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

我想知道如果即時覆蓋一些如何?我認爲它不會賦予數組,它們的X:Y是不同的。

+0

是什麼$行的可能值[「X」] – 2012-04-13 17:22:03

+0

@JohnnyCraig你可以看到他們在JSON是的第一個數字是X第二個數字是Y :) – Sir 2012-04-13 17:22:26

+0

它存在的行中出現'x'的值和丟失的行是相同的,所以第二行破壞了第一行。 – DCoder 2012-04-13 17:22:29

回答

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 2012-04-13 17:28:19

1

在循環之外分配並分配$ data數組。

+0

但$ row ['x']直到循環才被設置。 – Sir 2012-04-13 17:22:37