【PHP8.x】is_countable関数の使い方

is_countable関数の使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

is_countable関数は、与えられた変数がカウント可能かどうかを判定する関数です。この関数は、引数として渡された変数が配列であるか、またはCountableインターフェースを実装したオブジェクトである場合にtrueを返します。Countableインターフェースを実装したオブジェクトとは、count()関数を使ってその要素数を数えることができるオブジェクトのことです。

例えば、配列やSplFixedArray、あるいは独自のクラスでCountableインターフェースを実装しているインスタンスに対してこの関数を使用するとtrueが返されます。一方、整数、文字列、null、未定義の変数など、数えることができない型やCountableインターフェースを実装していないオブジェクトに対してはfalseが返されます。

この関数は、特にcount()関数を使用する前に変数の中身をチェックする際に非常に役立ちます。もしcount()関数にカウントできない型の変数を渡すと、PHPは警告(Warning)を発生させます。is_countable関数を使うことで、このような実行時エラーや意図しない警告を未然に防ぎ、より堅牢なプログラムを作成することができます。PHP 7.3以降で導入されたこの関数は、以前はis_array()instanceof Countableを組み合わせて行っていたチェックを簡潔に記述できるようにするために提供されています。

構文(syntax)

1<?php
2$array_variable = [1, 2, 3];
3$string_variable = "hello";
4
5var_dump(is_countable($array_variable));
6var_dump(is_countable($string_variable));
7?>

引数(parameters)

mixed $value

  • mixed $value: カウント可能な値(配列、オブジェクト、Countableインターフェースを実装したクラスのインスタンスなど)を指定します

戻り値(return)

bool

引数として渡された値がカウント可能な型(配列や traversable オブジェクトなど)である場合に TRUE を返します。それ以外の場合は FALSE を返します。

サンプルコード

PHP 8 is_countableでカウント可能か判定する

1<?php
2
3/**
4 * is_countable関数の使用例
5 */
6
7$array = [1, 2, 3];
8$object = new stdClass();
9$countableObject = new ArrayObject([4, 5, 6]);
10$int = 123;
11
12// 配列は countable
13var_dump(is_countable($array)); // bool(true)
14
15// 標準オブジェクトは countable ではない
16var_dump(is_countable($object)); // bool(false)
17
18// ArrayObject は countable
19var_dump(is_countable($countableObject)); // bool(true)
20
21// 整数は countable ではない
22var_dump(is_countable($int)); // bool(false)

PHP 8 の is_countable() 関数は、引数が countable (count 関数で数えられる) かどうかを判定するために使用します。システムエンジニアを目指す上で、データの種類を正しく判断することは非常に重要です。

is_countable() 関数は、mixed $value という引数を一つ取ります。この引数には、判定したい任意の値を渡します。例えば、配列、オブジェクト、整数などを渡すことができます。

この関数は、bool 型の戻り値を返します。引数が countable であれば true を、そうでなければ false を返します。

サンプルコードでは、配列、標準オブジェクト (stdClass)、ArrayObject、整数のそれぞれを is_countable() 関数に渡しています。

配列は true を返します。これは配列が count() 関数で要素数を数えることができるためです。標準オブジェクトは false を返します。これは標準オブジェクトがデフォルトでは countable ではないためです。ArrayObjecttrue を返します。ArrayObjectCountable インターフェースを実装しているためです。整数は false を返します。これは整数が要素を持つコレクションではないためです。

このように、is_countable() 関数を使用することで、変数が count() 関数で安全に扱えるかどうかを事前に確認できます。例えば、配列や Countable インターフェースを実装したオブジェクトに対してのみ処理を行いたい場合に、この関数を使用することでエラーを回避できます。データの型に応じて処理を分岐させる必要がある場合に、非常に役立つ関数です。

is_countable()関数は、PHP8で変数がcount()関数で数えられるかどうかを判定します。配列(array)やCountableインターフェースを実装したオブジェクト(ArrayObjectなど)はtrueを返します。標準オブジェクト(stdClass)や整数(int)など、数えられない変数はfalseを返します。

この関数は、変数の型をチェックせずにcount()関数を使用する前に、エラーを避けるために役立ちます。PHP8以前は、数えられない変数に対してcount()関数を使用するとエラーが発生していました。is_countable()で事前に確認することで、より安全なコードを書くことができます。

関連コンテンツ