[ PHP ] 配列内のキーと値の存在確認 ( array_key_exists / in_array )

Pocket

ここでは、配列内にキーまたは値が存在するかを確認するサンプルスクリプトを掲載しています。現在、ハイボールでテンション高めです。誤字・脱字はご容赦ください。

スポンサーリンク

配列内にキーが存在するか確認する

配列内にキーが存在するかの確認を行うサンプルスクリプトです。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 存在しないデータ(キーは確認対象ではない)
参考
スポンサーリンク


Pocket

Leave a Comment

Your email address will not be published. Required fields are marked *