Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: isset() против array_key_exists()
 
 автор: demonow   (21.03.2012 в 00:25)   письмо автору
 
 

Очень часто во многом коде встречал что наличия ключа в массиве проверяется именно isset()(в примитивном коде по типу проверки первый ли раз кто-то зашел на страницу), но недавно встретил код с применением второй функции между ними есть какае-то принципиальная особенность?

Пример применения "исета".
if (!isset($_REQUEST['button']))
    {
       echo "<form>
<input type='text' name='name' value='Введите имя'>
<input type='password' name='password'>
<input type='submit' name='button' value='Нажми'>
</form>";
    }
else 
    {
     if($_REQUEST['name']=="Bogdan" && $_REQUEST['password']=="Trotsko")
     {echo "Здраствуйте,".$_REQUEST['name'];}
      else  
     {echo "Доступ закрыт";} 

  Ответить  
 
 автор: Sfinks   (21.03.2012 в 01:30)   письмо автору
 
   для: demonow   (21.03.2012 в 00:25)
 

Разницы две.

1. Может и самого массива не быть. Т.е. проверяя array_key_exists( "a" , $array ); если $array не определен или не является массивом получите варнинг. А isset( $array['a'] ); вернет false.
2. Если ключ массива определен, но равен null, то array_key_exists() вернет true, а isset() - false.

  Ответить  
 
 автор: task   (21.03.2012 в 06:23)   письмо автору
 
   для: Sfinks   (21.03.2012 в 01:30)
 

isset не занимается проверкой ключей массива вообще, она проверяет установлена ли указанная переменная. А указать в качестве ключа массива null, это надо обладать богатой фантазией. )

  Ответить  
 
 автор: Sfinks   (21.03.2012 в 08:11)   письмо автору
 
   для: task   (21.03.2012 в 06:23)
 

Пункт 2 описан в мане. Так что уж извините )

  Ответить  
 
 автор: task   (21.03.2012 в 08:33)   письмо автору
 
   для: Sfinks   (21.03.2012 в 08:11)
 

Принято. А то, что результат разный, так потому он и разный, так как каждая из этих функций выполняет свою, конкретную задачу. Для автора же не плохо бы знать, что проверка именно ключей массива, при проверке пришедшей формы тоже приемлема, если нужно проверить массу ключей без многичесленных isset. В этом может помочь функция пересечения массивов.

  Ответить  
 
 автор: demonow   (21.03.2012 в 13:03)   письмо автору
 
   для: task   (21.03.2012 в 08:33)
 

Спасибо

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования