2012-04-13 82 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