Posted at

isset, in_array, array_key_exsistsの使い分け

More than 5 years have passed since last update.

PHPで、配列中に特定のキーが存在するか真偽値を取りたい場合、isset、in_array、array_key_existsという関数があります。

in_arrayの速度は、O(n)なので、キーの数が増えるほど重くなります。

issetとarray_key_existsは、O(1)なのでin_arrayよりもはるかに高速でした。

また、issetとarray_key_existsでは、NULLに対しての処理が違うようです。

<?php

$array_data = array('1' => NULL, '2' => 'test');

// FALSE
isset($array_data['1']);

// TRUE
array_key_exists('1', $array_data);

指定したキーの値がNULLでも検知したい場合は、array_key_exists。

それ以外は、issetを使うと良いと思います。

in_array - PHP Manual

isset - PHP Manual

array_key_exists - PHP Manual