繁体   English   中英

如何将JSON数组过滤为PHP数组

[英]How to filter JSON array into PHP array

我有一个用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数据库中的主要自动增量,而不是位于我的Web服务器上)

我希望数组成为[玩家,票数],所以当我回显数组时,我所使用的Google图表工具可以轻松解析该数组。 我花了最后5个小时来解决这个问题,但一直受困,感谢您的帮助!

要将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());

如果我正确理解了您的问题,则可以使用。

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

尝试这个 :

$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
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM