ここでは、配列内にキーまたは値が存在するかを確認するサンプルスクリプトを掲載しています。現在、ハイボールでテンション高めです。誤字・脱字はご容赦ください。
スポンサーリンク
配列内にキーが存在するか確認する
配列内にキーが存在するかの確認を行うサンプルスクリプトです。array_key_exists 関数を使用しています。名前もそのものズボリです。
$colors = array('red' => '赤', 'green' => '緑', 'blues' => array('writebule' => '薄い青', 'blackbule' => '濃い青'), 'blo' => null ); var_dump(array_key_exists('red' , $colors)); // bool(true) var_dump(array_key_exists('green' , $colors)); // bool(true) var_dump(array_key_exists('blues' , $colors)); // bool(true) var_dump(array_key_exists('writebule' , $colors)); // bool(false) var_dump(array_key_exists('blackbule' , $colors)); // bool(false) var_dump(array_key_exists('blo' , $colors)); // bool(true) // 検索する key は最上位の key のみが対象である var_dump(array_key_exists('writebule' , $colors['blues'])); // bool(true) var_dump(array_key_exists('blackbule' , $colors['blues'])); // bool(true)
isset 関数
array_key_exists 関数の他に、isset 関数を使用しても配列内にあるキーが存在するかをチェックすることが出来ます。ただし、array_key_exist 関数とは処理の内容が異なります。違いは下表のようになります。
関数 | 説明 |
---|---|
array_key_exists | 指定したキーまたは添字が配列にあるかどうかを調べる |
isset | 変数がセットされていること、そして NULL でないことを検査する |
なお、処理速度自体は isset 関数のほうが高速のようです。しかし、処理速度の違いが許容できる範囲であれば、可読性の観点からも array_key_exist 関数を使用したほうがよいかと思います。
ただし、決めるのはあなたです。
データが配列内に存在するか確認する
キーではなく、データが配列内に存在するかは in_array 関数を使って確認することができます。
$colors = array('red' => '赤', 'green' => '緑'); var_dump(in_array('赤', $colors)); // true var_dump(in_array('青', $colors)); // false 存在しないデータ var_dump(in_array('red', $colors)); // false 存在しないデータ(キーは確認対象ではない)