BLOGブログ
【PHP】配列キーの存在確認: isset() と array_key_exists()
PHPで配列のキーが存在するかを確認する際に、isset()
と array_key_exists()
の2つの関数を使うことができます。しかし、これらの関数には微妙な違いがあり、間違って使うと予期しない動作を引き起こす可能性があります。
isset() とは?
isset()
は、指定した変数が設定されていて、かつ null
ではない場合に true
を返します。配列のキーを確認する場合、次のように使用します。
$array = [“key1” => “value1”, “key2” => null];
var_dump(isset($array[“key1”])); // true
var_dump(isset($array[“key2”])); // false
var_dump(isset($array[“key3”])); // false
- ・キーが存在していても、その値が
null
の場合はfalse
を返します。 - ・未定義のキーや変数を確認する際に使用するのが一般的です。
isset()
は、値が null
の場合にはキーが存在していても false
を返してしまいます。そのため、値が null
を許容する場合には不適切な選択となる可能性があります。
array_key_exists() とは?
array_key_exists()
は、配列内に指定したキーが存在するかどうかを確認します。値が null
であってもキーが存在すれば true
を返します。
$array = [“key1” => “value1”, “key2” => null];
var_dump(array_key_exists(“key1”, $array)); // true
var_dump(array_key_exists(“key2”, $array)); // true
var_dump(array_key_exists(“key3”, $array)); // false
- 値が何であれ、キーが存在している限り
true
を返します。 - 配列内でキーが存在するかどうかを正確にチェックする場合に適しています。
array_key_exists()
は、変数自体が未定義の場合に使うとエラーを引き起こす可能性があるため、事前に変数が定義されていることを確認する必要があります。
使い分けのポイント
1. 値が null
を許容する場合
配列内のキーが存在することを確認したい場合、値が null
であってもキーの存在をチェックする必要があります。この場合、array_key_exists()
を使用します。
$array = [“key1” => null];
if (array_key_exists(“key1”, $array)) {
echo “キー ‘key1’ は存在します。”;
}
2. 値が null
を許容しない場合
キーが存在し、かつ値が null
でないことを確認したい場合は、isset()
を使用します。
$array = [“key1” => “value1”, “key2” => null];
if (isset($array[“key1”])) {
echo “キー ‘key1’ は存在し、値は null ではありません。”;
}
3. 両方を組み合わせて使う場合
状況によって isset()
と array_key_exists()
を組み合わせて使うことで、より柔軟なチェックが可能です。
$array = [“key1” => null];
if (array_key_exists(“key1”, $array) && !isset($array[“key1”])) {
echo “キー ‘key1’ は存在しますが、値は null です。”;
}
結論
- キーが存在しているかを正確にチェックしたい場合は
array_key_exists()
を使いましょう。 - キーが存在し、かつ値が null ではないことを確認したい場合は
isset()
を使いましょう。 - 特定の状況に応じて、これらの関数を適切に使い分けることで、バグを未然に防ぐことができます。
CONTACTお問い合わせ
サービスに関するお問い合わせやお見積もり・ご相談などお気軽にご相談ください。