Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   PHP|Функции для проверки существования ключа в массиве (http://forum.oszone.net/showthread.php?t=52573)

vadimiron 10-08-2005 15:22 347221

PHP|Функции для проверки существования ключа в массиве
 
Есть такая функция: array_key_exists("key",$array); С её помощью можно проверить, есть в данном массиве искомый ключ.
Но такой же эффект можно же достичь с помощью isset($array("key")).
Есть ли между ними какая нибудь разница??
Например: отличие обоих от empty() я понимаю, а вот есть ли различия между ими, не знаю

XCodeR 10-08-2005 16:23 347232

если память не изменяет то array_key_exists перебирает все ключи и сверяет с переданным ей, если не находит совпадения - возвращает 0..

isset же просто проверяет существует ли переменная, что в теории быстрее.

хотя, конечно, могу ошибаться, т.е. имхо....

Prisoner 11-08-2005 10:12 347355

Тут смысл, имхо, разный:
  1. isset - проверяет наличие переменной, означена ли она каким-либо значением.
  2. array_key_exists - проверяет наличие ключа или индекса.
В случае с массивом, ясный день, что они будут выдавать одно и тоже значение, и только лишь в одной ситуации разойдутся во мнениях:
Код:

$a = array('some_index' => NULL);
isset($a['some_index']) вернет false, a array_key_exists('some_index', $a) - true. А ведь NULL значение порой очень необходимо, к примеру запросы в БД могут возвращать NULL значения столбцов и когда результаты fetch'утся как ассоциативные массивы, то и возникает ситуация 'some_index' => NULL.

vadimiron 11-08-2005 12:42 347388

а я и забыл про NULL, только на FALSE проверял :) Сенкс


Время: 07:34.

Время: 07:34.
© OSzone.net 2001-