PHP

配列内から特定の要素を探す方法(array_key_exist, in_array, array_search)

配列内から特定の要素をとりだしたり、真偽判定をする際に用いることのできる手法。


array_key_exist()

特定のキーを持つ要素を探すことができる。

発見できた場合trueを返す。

因みに近しい関数でisset関数があるが、キーに紐づいている値がNULLの場合、issetはfalseを返すがarray_key_exist関数はtrueを返すという違いがある。


ex.)

$array = ['breakfast' => 'TKG',

'lunch' => 'Sushi',
'Dinner' => 'Ramen'
];

if(array_key_exists('breakfast', $array)){
echo "今朝は".$array['breakfast']."を食べました。";
}

//今朝はTKGを食べました。


連想配列でなく通常の配列でもキーを第一引数に入れてあげればarray_key_exists関数は使用できる。


ex.)

$array = ['apple', 'banana', 'lemon'];

if(array_key_exists('2', $array)){
echo "3つの果物を感じる....";
}

//3つの果物を感じる....


また多次元配列の場合、一次元に関しては問題なく関数の実行ができるが、それ以上の次元に関数を当てる場合、展開の必要がある。


ex.)

//一次元に対して関数を実行

$array = ['breakfast' => ['rice', 'grilled salmon', 'salad'],
'lunch' => ['ramen', 'gyoza'],
'dinner' => ['rice', 'nikuzyaga', 'salad']
];

var_dump(array_key_exists('lunch', $array));
//bool(true)

//二次元に対して関数を実行
var_dump(array_key_exists('lunch[0]', $array));
//bool(false)

//展開後実行
foreach($array as $meal){
var_dump(array_key_exists('0', $meal));
}
//bool(true) bool(true) bool(true)



in_array

特定のを持つ要素を探すことができる。

発見できた場合trueを返す。

こちらも対応できる範囲が一次元までなのでそれ以上追うならば展開の必要がある。


ex.)

$array = ['breakfast' => 'TKG',

'lunch' => 'Sushi',
'Dinner' => 'Ramen'
];

var_dump(in_array('TKG', $array));
//bool(true)



array_search

in_array関数と同様に特定の値を持つ要素を探す関数だが、真偽値を返すのではなく、紐づいているキーを返す。

こちらも対応は一次元までになる。


ex.)

$array = ['breakfast' => 'TKG',

'lunch' => 'Sushi',
'Dinner' => 'Ramen'
];

var_dump(array_search('TKG', $array));
//string(9) "breakfast"