今回の講義では、配列の要素を数える関数を学んでいきましょう。count関数と言います
配列の要素を数える関数……?
なんです、それ?
配列の要素を数える関数とは、文字どおり「配列の要素の数」を数えるための関数です。
「そんなものは普通に数えればわかる」と思うかもしれませんが、実際のプログラミングでは「配列の中に配列を入れる」ことも頻繁にあり、指定した変数の中に何個の要素が入っているのか分からなくなることも珍しくありません。
count関数とはどのような関数なのか?
冒頭でも紹介したように、count関数とは「配列の要素の数を数える関数」です。
たとえば、下記のような配列があったとします。
今回は念のため、変数a3の中身を出力していますが、出力するかどうかについては問題ではありません。
変数a3は「配列の中に配列を入れている」という状態です。
やたら複雑に感じますけど、こういうことはよくあるんですか?
はい。実は、とてもよくあることなんですよ
よくあるのかー はぁ、えらいこっちゃー
たとえば、お問い合わせフォームへの入力です。入力した内容を取得する際に、フォームの項目を配列化して、さらに項目の中でも配列化したものを作成しているケースも多いです。この場合、「配列の中に配列がある」状況ですよね。
今回の画像のように使用している配列の数が少なければ目視で数えることも難しくありません。でも、商品管理などで配列を使用していると配列の要素が数十~数百になると、さすがに目視では厳しいです。
PHPの学習:count関数の使い方
count関数の使い方は非常にシンプルです。
count(要素を数えたい配列,モード)
なんかごちゃごちゃ言ってたわりには、ものすごくシンプルだね
そうなんですよ。言葉で説明すると複雑に感じますが、コードではとてもスッキリしていますよね。countを宣言した後に()で引数を設定するのが特徴です
countを宣言して()の中に数えたい配列を記入すればそれだけで配列の個数についてカウントしてくれます。 それでは、実際に使ってみましょう。
このように、配列化された変数を引数として記入することで、その配列の中の個数をカウントしてくれるのがcount関数の使い方です。
変数a1の中は「オレンジ・リンゴ・イチゴ」の3つの要素が格納されていて、変数a2の場合は「赤色・青色」の2つ、変数a3の場合は「変数a1・変数a2」の2つですね。これらをそれぞれ数えてくれます。
count関数にCOUNT_RECURSIVEを設定しよう
先ほど「モード」という言葉を出したことに気づきましたか?
気づきました
実は、このcount関数には使用する際のモードというものがあるんですね
count関数を使用する際に設定するもう1つの引数についてですが、こちらはCOUNT_RECURSIVEという引数を使用します。
COUNT_RECURSIVEは、count関数で要素の数を調べた際に、「パラメータを再帰的にカウントできる引数」です。
再帰的……?
「再帰的」にというと難しい表現となりますが、「それ自身を含む」という意味があります。
簡単に言えば「配列の中身の要素の数をカウントした上で、それ自身の要素の数もカウントする」と考えれば問題ありません。 COUNT_RECURSIVEを使用した場合のプログラミングについては下記の通りになります。
今回は比較しやすいように、変数b4というものを作成し、その中にCOUNT_RECURSIVEを使用した場合にカウントされた要素の数を格納しています。 COUNT_RECURSIVEを使用すると、「a1=3個,a2=2個,a3=2個」という全ての要素の数をカウントした値が表示されます。
テスト:配列を沢山つくって要素の数を調べてみよう
さて、ここまで学んだところまで理解できているのかテストしましょうか。恒例の練習問題のお時間です
今回はcount関数の学習をしてきましたので、使用するのはcount関数と配列の2つです。
テスト問題
それでは、練習問題の条件について提示しましょう。
- 配列を5つ用意する
- 配列の中に配列を入れたものを作る
- 配列の要素を、count関数を使ってカウントする
- COUNT_RECURSIVEを使用して、配列の全要素をカウントする
以上の4つです。
配列の中身については何でも構いませんので挑戦してみてください。
頑張りましょう!
テストの答え合わせ
はい。 では、答え合わせをしていきましょうか
このようなプログラムが書けていたら合格です。
画像のケースでは、「配列の中に配列を入れる」ということを何度か繰り返しているので、コメントアウトをしていないと少し数えるのが難しくなっています。 しかし、count関数を使用すると目視では確認が難しい要素の数もきちんとカウントしてくれるので問題ありません。
PHPの学習:countのまとめ
今回はcount関数について学習しましたが、どうでしたか?
うぅ……今回もテストがさっぱりだった
今回のテストは、ちょっと難しめだったかもしれませんね。でも何回もコードを書いていけば、理解できるはずですよ。焦らずに繰り返し頑張ってみてください
Count関数は以前に学習したif文やfor文などに比べると直接的にプログラミングに関係する内容では無いかもしれません。極論を言えば「配列の要素の数をカウントする」だけの関数なので、管理が出来ていれば使用する機会もない関数の一つです。
そのため、count関数を使用するタイミングは、あくまでも「確認のために使用する」ケースが非常に多くなっています。 自分が作成したいプログラムに直接的な影響がある関数ではありませんが、覚えておくとバグやエラーなどを未然に防ぐことが出来るので色々と便利です。