Search

検索したいワードを入力してください

2019年03月05日

PHPで配列の要素数を数えるための関数4つを解説

PHPのcount関数やsizeof関数を使って要素数を数えるための関数を解説し、PHPの配列の基本的なことを理解することができます。この解説を基に他にもあるたくさんの配列関数を使ってもらうきっかけとし効率のよいプログラミングができるようになりましょう。

その他のPHPの配列操作はこちら
PHPの配列の初期化方法
PHPの配列の要素の追加方法
PHPの配列と要素の削除方法
PHPの配列要素の検索方法
PHPの配列を結合する方法
PHPの配列要素のソート方法

PHPのcount関数とは

PHPのcoun関数では配列の要素の数や、連想配列の要素の数を数えるために利用されます。
要素数の数を数えることによって、ループ処理で配列の処理を行うなどで利用することができます。

引数

PHPのcount関数の引数について説明します。

第1引数:配列名 mixed型
第2引数:COUNT_RECURSIVE または 1を設定 int 型任意

第1引数は配列名を指定、第2引数は再帰的に配列をカウントするかどうかを指定します。
第2引数はPHP4.2.0で追加されました。

書き方

PHPのcount関数は、以下のように記述します。
count ( $配列名 [, $モード] )

$モードには再帰的に配列をカウントするかどうかを設定します。COUNT_RECURSIVE または 1を設定すると再帰的に配列をカウントします。多次元配列の全ての要素をカウントする場合に設定します。

返り値

PHPのcount関数の返り値は配列の要素数、または連想配列の要素数を数値型で返します。count関数は添字の最大値を返すのではなく要素数の数を返すので注意してください。


$a[0],$a[1] の場合 count($a)は1ではなく、2が返ります。

count関数の使い方

ここでは配列や連想配列の要素を数えるためのサンプルコード、および要素数を取得し繰り返し処理を行うサンプルコードの紹介を行います。
PHPでは配列を使う事が多いので、count関数を使うことも多くなります。

配列の要素数をカウントするためのサンプル

ここではPHPの配列の要素数をカウントするためのサンプルを紹介します。

サンプルコード:
$a[0] = 1;
$a[1] = 3;
$a[2] = 5;

//配列の数を数える
$yousosu = count($a);

echo '要素数は ' . $yousosu;

実行結果 :
要素数は3

連想配列の要素数をカウントするためのサンプル その1

PHPのcount関数の引数に第2引数がない場合のサンプルを紹介します。

サンプルコード:
$seiseki = array('kamoku' => array('国語', '算数', '社会'),
'point' => array(70, 65, 80));
// 通常のカウント
echo '要素数は ' count($seiseki);

結果:
要素数は3

連想配列の要素数をカウントするためのサンプル その2

PHPのcount関数の引数に第2引数がある場合のサンプルを紹介します。

サンプルコード:
$seiseki = array('kamoku' => array('国語', '算数', '社会'),
'point' => array(70, 65, 80));
// 通常のカウント
echo '要素数は ' count($seiseki, COUNT_RECURSIVE);

結果:
要素数は8

要素の数だけループする

PHPでは繰り返し処理を行うためにfor文を利用します。ここではfor文と、wile文を利用したcount関数で取得した要素の数で処理を繰り返すサンプルを紹介します。

for文を利用したサンプルコード

for文を利用したサンプルコードを紹介します。

サンプルコード:
$kamoku = array('国語', '算数', '社会');
//要素数で繰り返す
for($i = 0 ; $i < count($kamoku ); $i++){
echo $i . '限目は:' . $kamoku[$i];
}

結果:
1限目は国語
2限目は算数
3限目は社会

while文でのサンプルコード

while文を利用したサンプルコードを紹介します。結果はfor文と同じになります。
サンプルコード:

$kamoku = array('国語', '算数', '社会');
//要素数で繰り返す
$i = 0;
while ($i < count($kamoku) ) {
echo $i . '限目は:' . $kamoku[$i];
$i++;
}

結果:
1限目は国語
2限目は算数
3限目は社会

foreach文での繰り返しについて

配列数で繰り返す処理はfor文ではなくforeachを利用するのが一般的です。foreachを利用するとcount関数で要素数を取得する事なく、要素数の数だけ繰り返し処理を行う事ができます。

サンプル:

$kamoku = array('国語', '算数', '社会');
//要素数で繰り返す
foreach($kamoku as $key => $value){
echo $i . '限目は:' . $kamoku[$i];
}

PHP7.2からの変更点

count関数はPHP7.2以降で値に引数にnullを指定すると、エラーになります。PHP7.2以前では、nullを指定すると0が返って来ますが、PHP7.2から以下のようにエラーになります。

count(NULL) returns a warning:
Warning: count(): Parameter must be an array or an object that implements Countable

PHPで要素数を数えるための他の関数

PHPではcount関数の他にもsizeofやarray_count_values関数などで配列の要素数を数える事ができます。ここでは、count関数以外の関数についての紹介を行います。

sizeof関数とは

PHPのsizeof関数はcount関数の別名(エイリアス)になります。count関数と同じで要素数を取得する事ができます。基本的な使い方はcount関数と同じになります。

sizeof関数の使い方

sizeof関数は実際はcount関数を読んでいるため、count関数と使い方は同じになります。

sizeof ( $配列名 [, $モード] )

引数:
第1引数:配列名 mixed型
第2引数:COUNT_RECURSIVE または 1を設定 int 型任意
count関数と同じで多次元配列の要素数を取得する場合は第2引数を指定します。

返り値
count関数と同じように配列の要素数または、連想配列の要素数を数値型で返します。

sizeof関数を使って要素数を取得する

sizeof関数を使って要素数を取得するサンプルを紹介します。

サンプルコード:
$a[0] = 1;
$a[1] = 3;
$a[2] = 5;

//配列の数を数える
$yousosu = sizeof($a);
echo '要素数は ' . $yousosu;

実行結果 :
要素数は3

多次元配列の要素数を取得する場合もcount関数と同じようなコードになります。

array_count_values関数とは

PHPのarray_count_values関数は、配列の値をキーとしてそのキーの値に同じ値がいくつあるかを数え、そのキーごとの出現回数を調べるための関数になります。

array_count_values関数の使い方

array array_count_valuesの引数は配列名を設定し、各配列の要素の値の出現回数を取得します。

array array_count_values( $配列名 )

引数:
第1引数:配列名 mixed型 配列名

返り値:
配列の値をキーとして、各配列の要素ごとに値の出現回数を返します。

array_count_values関数を使ってカウントする

array_count_values関数を使ったサンプルを紹介します。単独の配列の値の出現回数を調べるサンプルと、連想配列の値の出現回数をサンプルを紹介します。

単独の配列の場合のサンプルコード

単独の配列の場合のサンプルコードの紹介になります。

サンプルコード:
$array_val = array( "one", "one", "two", "three", "one", "two", "one" );
print_r($array_val);

実行結果:
Array
(
[one] => 4
[two] => 2
[three] => 1
)

連想配列の場合のサンプルコード

連想配列の場合のサンプルコードの紹介になります。

サンプルコード:

$array_val = array( "a" => "one","b" => "one", "c" => "two","d" => "three", "e" => "one", "f" => "two", "g" => "one" );
print_r($array_val);

実行結果:
Array
(
[one] => 4
[two] => 2
[three] => 1
)

array_fill関数とは

PHPのarray_full関数は、配列の値を初期化します。配列の値をクリアしたい場合に、配列の値をnull値や0などの指定した値で配列でクリアし、初期化処理を行います。

array_fillの使い方

array_fillの引数の開始位置に配列のインデックスを設定し、要素数には初期化する数、値には初期化する値を指定します。

array array_fill( $開始位置 , $要素数 , $値 )

引数:
第1引数:$開始位置 int型 配列の開始位置
第2引数:$要素数 int型 初期化する要素数
第3引数:$要素数 mixed型 初期化する値

返り値:
指定した値で初期化された配列を返します。

array_fill関数を使って配列要素を初期化する

array_fill関数を使ったサンプルを紹介します。最初の配列から指定した要素数を初期化するパターンと、途中の配列から指定した要素数を初期化するパターンの2パターンを紹介いたします。

最初の配列から初期化する場合のサンプルコード

最初の配列から指定した要素数で初期化するサンプルコードの紹介になります。

サンプルコード:

// インデックスの0番目から5要素を0で初期化する
$array = array_fill(0, 5, 0);
//出力
print_r($array);

実行結果:
Array
(
[0] => 0
[1] => 0
[2] => 0
[3] => 0
[4] => 0
)

途中の配列から初期化する場合のサンプルコード

途中の配列から指定した要素数で初期化するサンプルコードの紹介になります。

サンプルコード:
//インデックスの2番目から3要素を文字列"abc"で初期化する
$array = array_fill(2, 3, 'abc');
//出力
print_r($array);

実行結果:
Array
(
[2] => abc
[3] => abc
[4] => abc
)

配列の操作を行う関数を使うときの注意点

配列の初期化を行う

配列の初期化をしていない変数に配列処理を行うとエラーになります。array関数などを利用して必ず初期化をしましょう。

・array関数の例
$array = array();
$array = array('abc', 'efg', 'hij');

・[ ]を使用した例
$array[] = 'abc';
$array[] = 'efg';
$array[] = 'hij';

定義されていないキーを指定しない

配列の変数で、定義されていないキーを指定して参照するとエラーが発生します。
事前に要素数を数えたり、利用しているキーを確認してから配列処理をしましょう。

エラーが発生する例
$array = array("a", "b");
echo $array[2];

キー 0と1は値が定義されているが、2は未定義なためエラーが発生します。count関数などで要素数を確認しそれ以上のキーを指定しないようにしましょう

最後に配列はプログラミングの基本なのでしっかり理解しよう

ここでは、PHPで配列の要素数を数える方法としてcount関数などの関数を使い方とサンプルを使って解説いたしました。

配列を使う関数は他にもたくさんあり配列はプログラミングの基本になりますので、今回の要素数を数える関数をしっかり理解して配列について理解し、それを基に他の関数を使いこなしていきましょう。

その他のPHPの配列操作はこちら
PHPの配列の初期化方法
PHPの配列の要素の追加方法
PHPの配列と要素の削除方法
PHPの配列要素の検索方法
PHPの配列を結合する方法
PHPの配列要素のソート方法

【PR】多くの人がプログラミングを諦めてしまう理由をご存知ですか?



近年プログラミングを勉強する人が増えています。

プログラミング学習者の多くは独学から取り組もうとしますが、だいたい80%ほどは3ヶ月も続かずに諦めてしまいます。早い人は1日目で。

多くの人がプログラミングを独学しようとして諦める理由は、次の3つ。
●モチベーションが維持できない
●エラーの原因・解決方法が分からない
●どう学習すればよいか分からない

TechBoostというプログラミングスクールでは、みんなと一緒にプログラミングをするのでモチベーションの維持ができ、分からないことがあればマンツーマンで教えてくれ、徹底的に研究された初心者向けの教材が揃っています。

TechBoostを卒業後、実際にエンジニアとして転職した方もいるほど。

本気でプログラミングを学びたい方は、一度無料のカウンセリングでご相談ください。プログラミングを嫌いになる前に。

tech boostについて

オーダーメイド型の学習コンテンツを提供する「tech boost」 は、エンジニアのキャリア支援に特化したサービスを複数展開している株式会社Branding Engineerが運営しているプログラミングスクールです。最短3ヶ月間で、未経験から『プログラミングの基礎』、『実際に業務で必要となるスキル』、『今のトレンドとなっている知識』まで学べ、ご希望の方にはプロのキャリアアドバイザーによる就業支援を行うことができます。

tech boost卒業生インタビュー

tech boostの卒業生の声を聞きました。あなたがプログラミングを学びたい理由を、一度考えてみてください。
営業→Javaエンジニア→Rubyエンジニアと転向し、第一志望のFinTech企業で働く山下さん
元営業、ビジネスのわかるエンジニアを目指す菅原さん
サンフランシスコに交換留学し、シリコンバレーのVCでインターン中の梅本さん
予備校の営業から半年でエンジニア転職を果たした小田島さん

tech boostの口コミ



Related