
[code]

    $data = array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
    for ($i=0;$i<6;$i++) {
      $tmp[] = array_rand($data);
    }
    foreach ($tmp as $item) {
      echo $item . "\n";
    }
    
[/code]

この中から6個の数をランダムに表示させ、どの数が何個重複したのかを表示させたいのですが、どうやればいいですか？


CC BY-SA 3.0
2017-11-13T15:01:29.357
39550
2017-11-15T02:19:08.383
2017-11-13T22:38:09.010
26095
question
php
配列の中の数がいくつ重複しているか表示


PHP に標準で付いている [`array_count_values`](http://php.net/manual/ja/function.array-
count-values.php) 関数を用いると、分布を数えることができます。

[code]

    /* 元々のデータ配列 */
    $data = range(0, 9);
    /* 重複を許してランダムに $data から取ってきたデータが入る配列 */
    $items = [];
    
    /* 6個ランダムに取ってくる */
    for ($i = 0; $i < 6; $i++) {
        $items[] = array_rand($data);
    }
    
    /* 統計を取る */
    $stat = array_count_values($items);
    
    /* 出力する */
    echo "items: ";
    foreach ($items as $item) {
        echo $item, " ";
    }
    echo "\n";
    
    echo "statistics: \n";
    foreach ($stat as $item => $count) {
        echo "  ", $item, ": ", $count, " times\n";
    }
    
[/code]

\-- この回答は、[metropolis](https://ja.stackoverflow.com/users/16894/metropolis)
さんの[コメント](https://ja.stackoverflow.com/questions/39550/%E9%85%8D%E5%88%97%E3%81%AE%E4%B8%AD%E3%81%AE%E6%95%B0%E3%81%8C%E3%81%84%E3%81%8F%E3%81%A4%E9%87%8D%E8%A4%87%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E3%81%8B%E8%A1%A8%E7%A4%BA#comment40026_39550)を元に書かれたものです。


CC BY-SA 3.0
2017-11-15T02:19:08.383
39584
2017-11-15T02:19:08.383
19110
39550
answer