かもメモ

自分の落ちた落とし穴に何度も落ちる人のメモ帳

PHP 配列のキー・Objectのキー(プロパティ)の有無をチェックしたい。

配列のキーの有無のチェック

<?php
// return: bool
array_key_exists( 'key_name', $array );

array_key_exists
指定した key が配列に設定されている場合、 array_key_exists() は TRUE を返します。 key は配列添字として使用できる全ての値を使用可能です。
注意:
array_key_exists() は、最初のレベルのキーだけを捜します。 多次元配列のネストされたキーは、この関数では見つけられません。

isset()との違い

isset() は未定義またはNULLの時 false になるので、配列の値がnullの時、配列にキーが存在してもfalseになってしまう。
ex

<?php
$arr = [
  'str'        => 'text',
  'blank_str'  => '',
  'no'         => 1,
  'zero'       => 0,
  'bool_true'  => true,
  'bool_false' => false,
  'null'       => null,
];

👇 array_key_exists

<?php
array_key_exists("str", $arr);        // => true
array_key_exists("blank_str", $arr);  // => true
array_key_exists("no", $arr);         // => true
array_key_exists("zero", $arr);       // => true
array_key_exists("bool_true", $arr);  // => true
array_key_exists("bool_false", $arr); // => true
array_key_exists("null", $arr);       // => true
array_key_exists("no_key", $arr);     // => false ... 存在しないキーとの時だけfalse

isset

<?php
isset($arr["str"]);        // => true
isset($arr["blank_str"]);  // => true
isset($arr["no"]);         // => true
isset($arr["zero"]);       // => true
isset($arr["bool_true"]);  // => true
isset($arr["bool_false"]); // => true
isset($arr["null"]);       // => false ... 値がnullだとキーが存在してもfalse
isset($arr["no_key"]);     // => false

オブジェクトのプロパティの有無のチェック

<?php
// return: bool
property_exists( $object, 'property_name' );

property_exists
この関数は、与えられたプロパティ property が 指定されたクラスに存在するかどうかを確認します。
注意:
isset() とは対照的に、 プロパティの値が NULL の場合でも property_exists() は TRUE を返します。

プロパティの値が無くても、プロパティが存在していれば true になる

変数が何の型なのか調べる

<?php
// return: string
gettype( $var );

gettype
PHP 変数 var の型を返します。 型のチェックには、この関数ではなく is_* 関数を使います。


[参考]

初めてのPHP

初めてのPHP