PHP基礎編10:混乱しやすい配列の要素の個数を数えるのにはcountがオススメ

PHP入門
CANIT先生
CANIT先生

今回の講義では、配列の要素を数える関数を学んでいきましょう。count関数と言います

牛山くん
牛山くん

配列の要素を数える関数……?

猫田さん
猫田さん

なんです、それ?

配列の要素を数える関数とは、文字どおり「配列の要素の数」を数えるための関数です。

「そんなものは普通に数えればわかる」と思うかもしれませんが、実際のプログラミングでは「配列の中に配列を入れる」ことも頻繁にあり、指定した変数の中に何個の要素が入っているのか分からなくなることも珍しくありません。

count関数とはどのような関数なのか?

女性プログラマー

冒頭でも紹介したように、count関数とは「配列の要素の数を数える関数」です。

たとえば、下記のような配列があったとします。

今回は念のため、変数a3の中身を出力していますが、出力するかどうかについては問題ではありません。

変数a3は「配列の中に配列を入れている」という状態です。

牛山くん
牛山くん

やたら複雑に感じますけど、こういうことはよくあるんですか?

CANIT先生
CANIT先生

はい。実は、とてもよくあることなんですよ

猫田さん
猫田さん

よくあるのかー はぁ、えらいこっちゃー

たとえば、お問い合わせフォームへの入力です。入力した内容を取得する際に、フォームの項目を配列化して、さらに項目の中でも配列化したものを作成しているケースも多いです。この場合、「配列の中に配列がある」状況ですよね。

今回の画像のように使用している配列の数が少なければ目視で数えることも難しくありません。でも、商品管理などで配列を使用していると配列の要素が数十~数百になると、さすがに目視では厳しいです。

配列の要素数を間違えてしまうと、想定した結果にはなりません。だから、配列の要素の数を確認する必要があります。 そのために、今から紹介しするcount関数を使うというわけです。

PHPの学習:count関数の使い方

数字

count関数の使い方は非常にシンプルです。

count(要素を数えたい配列,モード)

猫田さん
猫田さん

なんかごちゃごちゃ言ってたわりには、ものすごくシンプルだね

CANIT先生
CANIT先生

そうなんですよ。言葉で説明すると複雑に感じますが、コードではとてもスッキリしていますよね。countを宣言した後に()で引数を設定するのが特徴です

countを宣言して()の中に数えたい配列を記入すればそれだけで配列の個数についてカウントしてくれます。 それでは、実際に使ってみましょう。

このように、配列化された変数を引数として記入することで、その配列の中の個数をカウントしてくれるのがcount関数の使い方です。

変数a1の中は「オレンジ・リンゴ・イチゴ」の3つの要素が格納されていて、変数a2の場合は「赤色・青色」の2つ、変数a3の場合は「変数a1・変数a2」の2つですね。これらをそれぞれ数えてくれます。

注意して欲しいのが、count関数ではモードを設定していないと1段階目の要素の数しかカウントしてくれません。今回のケースだと、変数a3の中にはa1とa2が格納されているので、本来ならば3個と2個が追加されるために7個となりますが、モードを設定していない状態だと1段階目しかカウントしないために2個とカウントされてしまいます。

count関数にCOUNT_RECURSIVEを設定しよう

女性
CANIT先生
CANIT先生

先ほど「モード」という言葉を出したことに気づきましたか?

牛山くん
牛山くん

気づきました

CANIT先生
CANIT先生

実は、このcount関数には使用する際のモードというものがあるんですね

count関数を使用する際に設定するもう1つの引数についてですが、こちらはCOUNT_RECURSIVEという引数を使用します。

COUNT_RECURSIVEは、count関数で要素の数を調べた際に、「パラメータを再帰的にカウントできる引数」です。

猫田さん
猫田さん

再帰的……?

「再帰的」にというと難しい表現となりますが、「それ自身を含む」という意味があります。

簡単に言えば「配列の中身の要素の数をカウントした上で、それ自身の要素の数もカウントする」と考えれば問題ありません。 COUNT_RECURSIVEを使用した場合のプログラミングについては下記の通りになります。

今回は比較しやすいように、変数b4というものを作成し、その中にCOUNT_RECURSIVEを使用した場合にカウントされた要素の数を格納しています。 COUNT_RECURSIVEを使用すると、「a1=3個,a2=2個,a3=2個」という全ての要素の数をカウントした値が表示されます。

テスト:配列を沢山つくって要素の数を調べてみよう

パソコン
CANIT先生
CANIT先生

さて、ここまで学んだところまで理解できているのかテストしましょうか。恒例の練習問題のお時間です

今回はcount関数の学習をしてきましたので、使用するのはcount関数と配列の2つです。

テスト問題

それでは、練習問題の条件について提示しましょう。

  • 配列を5つ用意する
  • 配列の中に配列を入れたものを作る
  • 配列の要素を、count関数を使ってカウントする
  • COUNT_RECURSIVEを使用して、配列の全要素をカウントする

以上の4つです。

配列の中身については何でも構いませんので挑戦してみてください。

牛山くん
牛山くん

頑張りましょう!

テストの答え合わせ

CANIT先生
CANIT先生

はい。 では、答え合わせをしていきましょうか

このようなプログラムが書けていたら合格です。

画像のケースでは、「配列の中に配列を入れる」ということを何度か繰り返しているので、コメントアウトをしていないと少し数えるのが難しくなっています。 しかし、count関数を使用すると目視では確認が難しい要素の数もきちんとカウントしてくれるので問題ありません。

PHPの学習:countのまとめ

パソコン
CANIT先生
CANIT先生

今回はcount関数について学習しましたが、どうでしたか?

猫田さん
猫田さん

うぅ……今回もテストがさっぱりだった

CANIT先生
CANIT先生

今回のテストは、ちょっと難しめだったかもしれませんね。でも何回もコードを書いていけば、理解できるはずですよ。焦らずに繰り返し頑張ってみてください

Count関数は以前に学習したif文やfor文などに比べると直接的にプログラミングに関係する内容では無いかもしれません。極論を言えば「配列の要素の数をカウントする」だけの関数なので、管理が出来ていれば使用する機会もない関数の一つです。

そのため、count関数を使用するタイミングは、あくまでも「確認のために使用する」ケースが非常に多くなっています。 自分が作成したいプログラムに直接的な影響がある関数ではありませんが、覚えておくとバグやエラーなどを未然に防ぐことが出来るので色々と便利です。

挫折率が高い??プログラミング学習のポイント
駆け出しエンジニアが一緒に学ぶ
CANITは、Progateやドットインストールで独学している人達同士をつなげます。駆け出しエンジニアのあなたのためのSNSです。
PHP入門
【この記事を書いた人】
CANIT 先生

あらゆるプログラミング言語をあやつるフリーの凄腕講師。温和な性格で「わかるまで教えます」がモットー。たまに時間ができると動物の仲間達に、プログラミングを教えることもある。現在の生徒は牛山くんと猫田さん。

CANIT
タイトルとURLをコピーしました