開発やWordpressなどの動的出力をする際に、配列内の要素の数を出力したい、配列内の要素の数だけループしたいといった事があります。
今回は、そんな時に使用できる配列内の要素数を数える事が出来るcount関数について詳しく解説していきます。
count関数とは
count関数とは、要素の数を数える事が出来る関数です。
開発や動的出力時の処理として要素数を数える事はよくあり、非常に使う頻度が高い関数となります。
基本的な使い方や、応用については以下の項目で解説していきます。
count関数の基本的な使い方
まず最初に、count関数の基本的な使い方です。以下のように記述します。
$arr = array("apple","orange","grape");
echo count($arr);
// 実行結果:3
count関数の第1引数に配列を指定する事で、配列内の要素数を数える事ができます。
このように、簡単に要素数を数える事が可能です。
要素の数だけループする
count関数で配列内の要素数を取得し、そのまま出力する事はあまり多くはありません。
実際の作業としては要素の数だけループする、という方が多いかと思います。
以下のように記述する事で、配列内の要素数分だけループする事が可能です。
$arr = array("apple","orange","grape");
for ($i = 0; $i < count($arr); $i++) {
echo $arr[$i]."<br>";
}
/*
実行結果
↓
apple
orange
grape
*/
上記のように、for文を使用しcount関数で取得した要素の数だけループして出力しています。
連想配列内の要素数を数える
続いて、先程のような単純な配列(添字配列)だけではなく、連想配列でも要素の数を数える事ができます。まずは先程と同じようにcount関数で要素数を数えてみます。
$arr = array(
"赤"=>["リンゴ","イチゴ","トマト"],
"緑"=>["メロン","キュウリ","ピーマン"],
"黄"=>["バナナ","パイナップル","レモン"]
);
echo count($arr);
// 実行結果:3
先程と同じようにcount関数で要素数を数えると、連想配列のキーの数だけ数えてしまいます。
連想配列のすべての要素を数えるには、count関数の第2引数にCOUNT_RECURSIVE(または1)を指定します。
$arr = array(
"赤"=>["リンゴ","イチゴ","トマト"],
"緑"=>["メロン","キュウリ","ピーマン"],
"黄"=>["バナナ","パイナップル","レモン"]
);
echo count($arr,COUNT_RECURSIVE);
// 実行結果:12
このように、COUNT_RECURSIVE(または1)を指定すると、全ての要素数を数えるため、$arr直下の配列数(3)とその配列それぞれの要素数(3・3・3)を合わせた12が出力されます。
連想配列だけではなく、多次元配列でも使用可能です。
孫配列の要素数のみを数える
あまり使う機会は多くはないかと思いますが、先程の連想配列のキーを除く要素数を数えるには以下のようにする事で取得可能です。
$arr = array(
"赤"=>["リンゴ","イチゴ","トマト"],
"緑"=>["メロン","キュウリ","ピーマン"],
"黄"=>["バナナ","パイナップル","レモン"]
);
echo count($arr,COUNT_RECURSIVE) - count($arr);
さいごに
いかがでしたでしょうか。
今回は、count関数の基本的な使い方や配列内の要素数をcount関数で取得する方法を解説しました。
この関数はよく使用しますので、基本的な使い方はもちろん、応用までしっかりと覚えておいてください。