我读了一些线程,但它们似乎都不符合我的要求。 我正在尝试做的事情就像投票系统,但目前不包括mysql。
我制作了三个音乐类型的单选按钮,包括pop,rock,metal和提交 所以无论一个人选择其中任何一个并提交数据都写入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,但我这样做的方式似乎完全没有错了或者永远不会工作。我尝试了其他一些方法来获得金属/弹出,所以我可以尝试计算相同的东西。
AH!我刚刚发现了这个话题How to filter JSON array into PHP array
明天我要读这个帖子,看看是否有帮助。 但是,如果你能帮我一臂之力也不会受到伤害。
答案 0 :(得分:1)
Keep in mind the JSON you have posted is a not a valid JSON.
<?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);