0

我阅读了一些线程,但似乎没有一个符合我的需要。我正在尝试做的事情类似于投票系统,但目前不包括 mysql。

我制作了三个音乐类型的单选按钮,分别是流行、摇滚、金属和提交,因此无论谁选择其中一个并提交数据,都会将数据写入 data.json 并存储在那里。

然后我有一个页面来加载 data.json 文件中的所有数据,但我想计算有多少人选择了金属,有多少人选择了岩石。

目前我仍在测试,我实际上想到了一个想法,但不知何故搜索并没有得到我想要的......有人可以帮帮我吗?

这是我的 data.json 文件

{"type":"metallic"}
{"type":"pop"}
{"type":"metallic"}

这就是我目前的结果代码

<?php
$file = fopen('data.json', "r");       

$array_record = array();

while(!feof($file))                       
{
    $line = fgets($file);                 
    $data = json_decode($line, TRUE);     

    if (is_array($data))                  
    {                
        foreach ($data as $key => $value) 
        {
           // echo $key.'='.$value.' ';      // show key=value pairs
          $array_record += array($value,);
          var_dump($data);
          print_r($data);
          echo $value;

        }
        echo '<br>'.PHP_EOL;             
    }
}


fclose($file);                          
?>

我知道代码很乱,因为我尝试先设置一个空数组,然后将$value类似于金属的东西放入数组中,这样我就可以使用 array_count_values 但我这样做的方式似乎完全错误,或者那永远行不通。我尝试了其他几种方法来仅获得金属/流行音乐,因此我可以尝试计算相同的东西。

啊!我刚刚发现这个主题如何将 JSON 数组过滤到 PHP 数组中

我明天要读这个帖子,看看它是否有帮助。但如果你也能帮我一把,那也无妨。

4

1 回答 1

1

请记住,您发布的 JSON 不是有效的 JSON。

array_reduce

<?php
$json = '[{"type":"metallic"},{"type":"pop"},{"type":"metallic"}]';
$result = array_reduce(json_decode($json,TRUE),
    function($v, $item)
    {
        if (!array_key_exists($item['type'], $v))
            $v[$item['type']] = 1;
        else
            $v[$item['type']]++;
        return $v;
    }, array()
);
print_r($result);

现场演示。

于 2013-09-22T09:52:29.240 回答