0

Javaで生成されたJSONArrayがあり、それをPHPファイルの1つに投稿して、ファイルに保存します。そこから読み取られ、このデータに基づいてグラフを生成する必要があります。必要なのは、不要な値を持つ生のJSONを単純なphp配列に変換することだけです。

[{"id":1,"timestamp":"1363135091","reward":1200,"player":"Orangeguy24","address":"108.28.239.167","service":"MC-Index"},{"id":2,"timestamp":"1363135091","reward":1200,"player":"Orangeguy24","address":"108.28.239.167","service":"MC-Index"}]

JSON配列内の2つの要素の例です。私がする必要があるのは、それに応じてそれらの値を配列にフィルターすることです。

たとえば、「プレーヤー」の投票数を取得する場合、1つの要素が1票であるため、JSONArrayに含まれる要素の数を合計する必要があります(IDは、WebサーバーにないmysqlDBのプライマリ自動インクリメントです。 )。

配列を[player、votes]にしたいので、配列をエコーすると、使用しているgoogleチャートツールで簡単に解析できます。私は過去5時間これに取り組んできました、そして私は立ち往生しています、助けてくれてありがとう!

4

2 に答える 2

1

JSONをphp配列にデコードするには、次のようにします。

$json_array = json_decode($raw_json);

次に、配列から各プレーヤーの投票数を取得するには、次のようにします。

$player_votes = array_reduce($json_array,
    function($v, $item) {
        if(!array_key_exists($item->player, $v))
            $v[$item->player] = 1;
        else
            $v[$item->player] = 1 + $v[$item->player];

        return $v;
    }, array());

私があなたの質問を正しく理解していれば、これはうまくいくでしょう。

編集:2番目のコードスニペットを更新しました

于 2013-03-19T00:23:53.993 に答える
0

これを試して :

$str   = '[{"id":1,"timestamp":"1363135091","reward":1200,"player":"Orangeguy24","address":"108.28.239.167","service":"MC-Index"},{"id":2,"timestamp":"1363135091","reward":1200,"player":"Orangeguy24","address":"108.28.239.167","service":"MC-Index"}]';

$res   = array();
foreach(json_decode($str,true) as $val){
  if(array_key_exists($val['player'],$res)){
     $res[$val['player']]   = $res[$val['player']]+1;
  }
  else{
     $res[$val['player']]   = 1;
  }

}

echo "<pre>";
print_r($res);

出力:

Array
(
    [Orangeguy24] => 2
)
于 2013-03-19T04:49:14.730 に答える