1

データをjsonエンコードする前に配列を作成するwhileループがありますが、テストしたところ、2行が返され、2回ループします。jsonエンコードでは、データの行の1つだけが表示されます= /

これは私の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のデータセットが1つしかないため、混乱しています。

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

上記のデータと同様に、これを作成するデータの最初の行が欠落しています。

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

どうやって上書きしてるのかな?配列にimassignが与えられず、X:Yが異なると思いました。

4

2 に答える 2

1

$data配列をループの外側に割り当てて割り当てます。

于 2012-04-13T17:21:25.380 に答える
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 に答える