・IT/Web系エンジニアの経験者の方
・どこの転職エージェントを利用しようか迷っている方
それなら、キッカケエージェントにご相談!
キッカケエージェントでは、少数精鋭のエージェントが、エンジニアの経験やスキル、志向性などをカウンセリングし、的確なアドバイスを提供します!
また、徹底した企業へのヒアリングにより、最適なマッチングを実現し、今では内定率が一般的なエージェントの2倍以上となっています!
転職エージェントに迷っている方、まずは無料でキャリア相談から!
(この記事は2022年10月17日に投稿されました。)
PHPで配列の値のそれぞれの出現回数を数える方法として、array_count_values()があります。
array_count_values()とは指定した配列に格納されたそれぞれの値の出現回数をカウントする関数になります。
それぞれの値の出現回数をカウントすることから、カウントしたそれぞれの値の結果を返り値として返すようになります。
そのため、どれだけ長い配列でもどのような値が何個入っているのかすぐに確認することができます。
また、array_count_values()は多次元配列の値の出現回数を調べることもできます。
しかし、多次元配列単位で指定するとエラーが発生しますので、インデックスを指定して1次元配列単位で指定するようにしましょう。
今回はPHPのarray_count_values()で配列や連想配列の値の出現回数を調べる方法について紹介していきます。
array_count_values()とは
array_count_values()とは指定した配列に格納された値の出現回数をカウントする関数になります。
値の出現回数をカウントするため、「それぞれカウントした結果の連想配列」を返り値として返すようになります。
array_count_values()の書き方
array_count_values()の書き方は下記のようになります。
1 | array_count_value('対象の配列'); |
array_count_values()のパラメータ
array_count_values()のパラメータは下記のようになります。
- 対象の配列(必須):
値の出現回数を調べたい配列を指定する
array_count_values()は必須なパラメータとして「対象の配列」を指定します。
array_count_values()で配列の値の出現回数を調べるサンプルコード
array_count_values()で配列の値の出現回数を調べるサンプルコードをご紹介します。
ここでは、下記の2つのパターンでarray_count_values()を使用ます。
- 配列に値が存在する場合
- 配列に値が存在しない場合
配列に値が存在する場合
配列に値が存在する場合にarray_count_values()を使用してみます。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 | <?php echo('● 対象の配列'); $name = ['伊藤', '鈴木', '高橋', '佐藤','伊藤', '伊藤', '高橋']; print_r($name); echo('● array_count_values()使用後'); $name_cnt = array_count_values($name); print_r($name_cnt); ?> |
実行結果
array_count_values()によって、配列の値の出現回数を調べています。
そのため「伊藤」は「3」、「高橋」は「2」、「佐藤」と「鈴木」はそれぞれ「1」が表示されています。
配列に値が存在しない場合
配列に値が存在しない場合にarray_count_values()を使用してみます。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 | <?php echo('● 対象の配列'); $name = []; print_r($name); echo('● array_count_values()使用後'); $name_cnt = array_count_values($name); print_r($name_cnt); ?> |
実行結果
配列に値が存在しない場合は調べる値がないため、何も行われません。
そのため、空の配列が表示されています。
array_count_values()で型が異なる同じ数値の値の出現回数を調べる場合
配列に型が異なる同じ数値の値が存在する場合にarray_count_values()を使用すると、それらの値は同じ値と判断して出現回数を調べるようになります。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 | <?php echo('● 対象の配列'); $name = ['3', '4', '5', 3, 4, 5, '4', '5']; print_r($name); echo('● array_count_values()使用後'); $name_cnt = array_count_values($name); print_r($name_cnt); ?> |
実行結果
違う型あっても値が同じであるならば、同じ値として出現回数を調べています。
そのため、文字列型の「3」や「4」や「5」と数値型の「3」や「4」や「5」を一緒にカウントした回数が表示されています。
array_count_values()で連想配列の値の出現回数を調べるサンプルコード
array_count_values()で連想配列の値の出現回数を調べるサンプルコードをご紹介します。
キーの出現回数を調べる場合
キーの出現回数を調べる場合にarray_count_values()を使用してみます。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <?php echo('● 対象の連想配列'); $name = [ 'ito1' => '伊藤', 'suzuki' => '鈴木', 'takahashi1' => '高橋', 'sato' => '佐藤', 'ito2' => '伊藤', 'ito3' => '伊藤', 'takahash2' => '高橋' ]; print_r($name); echo('● 連想配列のキーを取得'); $name_keys = array_keys($name); print_r($name_keys); echo('● array_count_values()使用後-1'); $name_cnt1 = array_count_values($name_keys); print_r($name_cnt1); ?> |
実行結果
array_count_values()によって、array_keys()で取得した連想配列のキーの出現回数を調べています。
そのため、それぞれのキーに「1」が表示されています。
もし、array_keys()について詳しく知りたい場合は下記の記事をご参考下さい。
値の出現回数を調べる場合
値の出現回数を調べる場合にarray_count_values()を使用してみます。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <?php echo('● 対象の連想配列'); $name = [ 'ito1' => '伊藤', 'suzuki' => '鈴木', 'takahashi1' => '高橋', 'sato' => '佐藤', 'ito2' => '伊藤', 'ito3' => '伊藤', 'takahash2' => '高橋' ]; print_r($name); echo('● 連想配列の値を取得'); $name_values = array_values($name); print_r($name_values); echo('● array_count_values()使用後-2'); $name_cnt2 = array_count_values($name_values); print_r($name_cnt2); ?> |
実行結果
array_count_values()によって、array_values()で取得した連想配列の値の出現回数を調べています。
そのため「伊藤」は「3」、「高橋」は「2」、「佐藤」と「鈴木」はそれぞれ「1」が表示されています。
array_count_values()で多次元配列の値の出現回数を調べる場合
多次元配列の値の出現回数を調べる場合にarray_count_values()を使用してみます。
2次元配列の場合
2次元配列の場合にarray_count_values()を使用してみます。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <?php echo('● 対象の2次元配列'); $name = [ ['山田', '佐藤', '中村', '小林', '加藤', '山田'], ['吉田', '佐々木', '中村', '小林', '山田'] ]; print_r($name); echo('● array_count_values()使用後-1'); $name_cnt1 = array_count_values($name[0]); print_r($name_cnt1); echo('● array_count_values()使用後-2'); $newName = []; foreach ($name as $value2) { foreach ($value2 as $value1) { array_unshift($newName, $value1); } } $name_cnt2 = array_count_values($newName); print_r($name_cnt2); ?> |
実行結果
array_count_values()によって、2次元配列の中にある指定した配列の値の出現回数を調べています。
また、foreach文とarray_unshift()を組み合わせて使用することで、2次元配列の中にある全ての配列の値の出現回数を調べることができます。
もし、array_unshift()について詳しく知りたい場合は下記の記事をご参考下さい。
foreach文を2回使用して、2次元配列の中にある全ての値を取り出し、取り出した値をarray_unshift()で別の1次元配列に追加しています。
3次元配列の場合
3次元配列の場合にarray_count_values()を使用してみます。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | <?php echo('● 対象の3次元配列'); $name = [ [['山田', '佐藤', '中村', '小林', '加藤', '山田'], ['吉田', '小林', '山田']], [['佐々木', '井上','林', '木村', '林'], ['井上', '林', '佐々木']] ]; print_r($name); echo('● array_count_values()使用後-1'); $name_cnt1 = array_count_values($name[1][0]); print_r($name_cnt1); echo('● array_count_values()使用後-2'); $newName = []; foreach ($name as $value3) { foreach ($value3 as $value2) { foreach ($value2 as $value1) { array_push($newName, $value1); } } } $name_cnt2 = array_count_values($newName); print_r($name_cnt2); ?> |
実行結果
array_count_values()によって、3次元配列の中にある指定した配列の値の出現回数を調べています。
また、foreach文とarray_push()を組み合わせて使用することで、3次元配列の中にある全ての配列の値の出現回数を調べることができます。
もし、array_push()について詳しく知りたい場合は下記の記事をご参考下さい。
foreach文を3回使用することで、3次元配列の中にある全ての値を取り出し、取り出した値をarray_push()で別の1次元配列に追加しています。
指定した配列の値の数を調べる場合
指定した配列の値の数を調べる場合は、count()を使用します。
count()とは、指定した配列の要素の数を数える関数になります。
array_count_values()と違って、配列の中に要素が何個あるかをカウントしてくれます。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 | <?php echo('● 対象配列'); $name = ['清水', '斎藤', '山崎', '森', '池田', '橋本', '阿部']; print_r($name); echo('● count()使用後'); $name_cnt = count($name); print_r($name_cnt); ?> |
実行結果
count()によって指定した配列の値の数を調べています。
そのため、配列に格納された値の個数である「7」が表示されています。
まとめ
⚫︎ array_count_values()とは、は指定した配列に格納された値の出現回数をカウントする関数である
⚫︎ 配列に値が存在する場合にarray_count_values()を使用すると、出現した値のそれぞれの個数を返す
⚫︎ 配列に値が存在しない場合にarray_count_values()を使用すると、空の配列を返す
⚫︎ 配列の値に文字列型と数値型の同じ数字の値が存在する場合にarray_count_values()を使用すると、同じ値として出現回数を調べる
⚫︎ array_count_values()は、連想配列の値の出現回数を調べることができる
(キーや値のどちらかを対象にして調べることも可能)
⚫︎ array_count_values()は、多次元配列の値の出現回数を調べることができる
(配列にある全ての値を対象にする場合はforeach文で値を取り出して、別の1次元配列に格納する)
⚫︎ 指定した配列の値の数を調べる場合は、count()を使用する