1

我有一个 while 循环,它在 json 编码数据之前创建一个数组,但是虽然我已经测试过它并且我得到了 2 行返回并且它循环了两次..我的 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"]}} 

它缺少将创建此数据的第一行数据以及上面的数据:

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

我想知道我是否覆盖了一些如何?我认为它不会将 im 分配给数组,并且它们的 X:Y 是不同的。

4

2 回答 2

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();
    }
}
于 2012-04-13T17:26:54.677 回答
1

在循环之外分配和分配您的 $data 数组。

于 2012-04-13T17:21:25.380 回答