0

いくつかのスレッドを読みましたが、必要なものと一致するものはないようです。私がやろうとしているのは投票システムのようなものですが、現時点ではmysqlは含まれていません。

ポップ、ロック、メタリック、サブミットの3つのラジオボタンを作成し、いずれかを選択してサブミットしたデータが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 に答える