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お問い合わせ
サービスに関するお問い合わせやお見積もり・ご相談などお気軽にご相談ください。
