定義と使い方
- PHPバージョン
- 4+
is_int()関数は、与えられた値が整数(integer)タイプであるかを確認します。引数として渡された値が整数タイプであればtrueを返し、そうでなければfalseを返します。
配列(array)タイプは配列を表すデータタイプです。PHPにおいて配列は、インデックス配列(一般配列)と連想配列の二つのタイプがあります。
基本例
/* インデックス配列(Indexed Array)タイプ */
var_dump(is_array(array(1, 2, 3))); // bool(true)
var_dump(is_array([1, 2, 3])); // bool(true)
var_dump(is_array([])); // bool(true)
/* 連想配列(Associative Array) */
var_dump(is_array(array('name' => 'foo', 'age' => 30))); // bool(true)
var_dump(is_array(['name' => 'foo', 'age' => 30])); // bool(true)
/* ブール(boolean)および文字列 */
var_dump(is_array(true)); // bool(false)
var_dump(is_array(false)); // bool(false)
var_dump(is_array('array')); // bool(false)
/* その他のタイプ */
var_dump(is_array(100)); // bool(false)
var_dump(is_array(null)); // bool(false)
/* タイプキャスティング(Type Casting、型変換) */
var_dump(is_array((array) 'foo')); // bool(true)
var_dump(is_array((array) 100)); // bool(true)
ご確認ください!gettype()関数は、与えられた値のデータタイプを文字列として返します。
構文
is_array(mixed $value): bool
引数
$value |
必須。配列(array)タイプであるかを確認する値です。 |
|---|
戻り値
引数として渡された値が配列タイプであればtrueを返し、そうでなければfalseを返します。
注意点
is_array()関数を使用する際に注意すべき点があります。
空の配列もtrueを返します
is_array()関数は、空の配列を含め、配列を指すすべての変数に対してtrueを返します。これは、is_array()関数が該当の変数が配列であるか否かを確認するものだからです。つまり、空の配列も配列であることを認識し、trueを返します。
$a = array(); // array()を利用した空の配列
$b = []; // []を利用した空の配列 => PHP 5.4+ 導入
var_dump(is_array($a)); // bool(true)
var_dump(is_array($b)); // bool(true)
オブジェクトは配列と見なされません
オブジェクトは配列と類似した方式で動作することがありますが、配列と同一ではありません。オブジェクトは配列よりもはるかに多くの機能を提供し、配列とは異なる方式で動作するさまざまな特徴を持っています。したがって、is_array()関数を使用して変数のタイプを確認する際、オブジェクトは常にfalseを返すという点を覚えておく必要があります。
変数のタイプがオブジェクトであるかを確認するには、is_object()関数を使用するのが良いでしょう。
コードの補足説明is_object()関数は、与えられた値がオブジェクト(object)タイプであるかを確認する関数です。
class MyClass {
public $property;
public function __construct($value) {
$this->property = $value;
}
}
$obj = new MyClass('value');
var_dump(is_array($obj)); // bool(false)
活用例
is_array()関数は、以下のような場合に使用すると便利、あるいは有用です。
コードの安全性を高めるために
コード内で特定の変数が配列であるかを確認する必要がある場合、is_array()関数を使用して安全に検査できます。これにより、予期しないタイプの変数が渡された際に発生する可能性のあるエラーを防止できます。
function my_function($data) {
if (!is_array($data)) {
throw new InvalidArgumentException('引数は配列である必要があります。');
}
// ...
}
上記のコードでmy_function()は$dataという引数を必要とします。しかし、もし関数が呼び出される際に配列ではない他のタイプのデータが渡された場合、例外を発生させることで関数が異常に動作するのを防ぐことができます。
配列関連の機能を実行する前に
配列関連の機能を実行する前にis_array()関数を使用して変数が実際に配列であるかを確認するのが良いでしょう。これによりエラーを防止し、コードの可読性を高めることができます。
$data = maybe_get_array();
if (is_array($data)) {
foreach ($data as $item) {
// ...
}
}
コードの補足説明foreachループは、配列やオブジェクトを反復処理する際に使用される代表的な構文です。
上記のコードで$data変数がmaybe_get_array()関数を通じて返された値であると仮定します。しかし、返された値が配列ではない場合もあります。この場合にis_array()関数を使用して$dataが配列であるかを確認できます。