За последние 24 часа нас посетили 17944 программиста и 1675 роботов. Сейчас ищут 1134 программиста ...

Есть ли разница между проверкой isset и без него?

Тема в разделе "PHP для новичков", создана пользователем vovan1409, 28 апр 2012.

  1. vovan1409

    vovan1409 Активный пользователь

    С нами с:
    14 мар 2012
    Сообщения:
    33
    Симпатии:
    0
    Есть разница между
    Код (Text):
    1. if($name=='') и if(!isset($name))
     
  2. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    php.net/manual/ru/types.comparisons.php
     
  3. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    isset проверяет, есть ли такая переменная вообще, или нет. Удобно для проверки параметров в массивах типа $_GET, $_POST и т.д.
    В операторе сравнения с пустой строкой переменная уже точно должна существовать. Иначе сравнивать со строкой нечего.
     
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.108
    Симпатии:
    1.243
    Адрес:
    там-сям
    для полноты картины надо упомянуть if (empty($var)). использовать с умом )))
    условие сработает если
    - не существует переменной $var, или
    - она существует, но содержит NULL, 0, '0', '' или пустой массив
    аргументом empty() можно поставить только переменную, по загадочным причинам все прочие выражения недопустимы
     
  5. vovan1409

    vovan1409 Активный пользователь

    С нами с:
    14 мар 2012
    Сообщения:
    33
    Симпатии:
    0
    Т.е. получается, чтобы не писать
    Код (Text):
    1. $name=@$_POST['name']
    используем
    Код (Text):
    1. if(isset($_POST['name']))
    и в этом случае можно обойтись без @ (подавления возможных ошибок) и писать
    Код (Text):
    1. $name=$_POST['name']
    . Так?
     
  6. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Тут на форуме часто в примерах можно увидеть конструкцию
    Код (PHP):
    1. $name=(isset($_POST['name']))?$_POST['name']:''; 
    как совмещающую проверку на наличие переменной $_POST['name'] и инициализацию $name. Если переменной $_POST['name'] нет, то присваивается пустая строка. Теперь переменная $name будет создана и инициализирована не зависимо от того, пришли ли данные, или нет. Это залог стабильной и быстрой работы скрипта.
    @ делают на всякий случай, т.к. на боевом сервере (хостинге) может быть ключен вывод ошибок и предупреждений. Но в правильном коде такое вряд ли встретишь. И правильный хостинг не выводит все ошибки тоже.
     
  7. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    А, что допереть ссылки мало!?))
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    нет смысла присваивать значение массива переменной. =) работай сразу с массивом.