0

我有一个用 java 生成的 JSONArray,我将它发布到我的一个 PHP 文件中,并保存到一个文件中。从那里读取它,我需要根据这些数据生成一个图表。我所需要的只是将具有我不需要的值的原始 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 个元素的示例。我需要做的是相应地将这些值过滤到数组中。

例如,获取“玩家”有多少票,我需要将 JSONArray 中的元素数量相加,因为 1 个元素是 1 票(id 是我的 mysql DB 中的主要自动增量,不在我的网络服务器上)

我希望数组是 [player, votes] 所以当我回显数组时,我正在使用的谷歌图表工具很容易解析它。我已经花了最后 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());

如果我正确理解您的问题,这将起作用。

编辑:更新了第二个代码片段

于 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 回答