ФорумПрограммированиеPHP для идиотов → Равна ли переменная 0

Равна ли переменная 0

  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 13 февраля 2010 г. 19:01

    Приходит переменная гетом. С помощью мб_сабстра я беру первый сивол. Дальше мне нудно проверить равен ли символ 0.
    preg_match('/^0$/', $a); - так рабоает, но это бред.
    Как еще?
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 13 февраля 2010 г. 19:04, спустя 2 минуты 37 секунд

    $a == 0 не катит уже?
    Спустя 105 сек.
    if($a == strVal(0)) еще так можно
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 13 февраля 2010 г. 19:08, спустя 4 минуты 6 секунд

    if($a === '0')
    Сапожник без сапог
  • Frozzeg

    Сообщения: 5641 Репутация: N Группа: Джедаи

    Spritz 13 февраля 2010 г. 19:13, спустя 5 минут 14 секунд

    if (8====Э)
    You can be anything you want to be. Just turn yourself into anything you think that you could ever be.
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 13 февраля 2010 г. 19:48, спустя 34 минуты 54 секунды

    $a == 0 - всегда тру
    $a == strVal(0) работает пробовал $a == intval($a) - всегда тру
    $a === '0' работает. Пробовал без кавычек. всегда фалс.
    Вывод - учи матчасть =) Это я сам себе)
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 13 февраля 2010 г. 19:57, спустя 8 минут 40 секунд

    Frozzeg, ошибка
    Parse error: syntax error, unexpected '=' in

    Может всетаки if ((.)(.))
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 13 февраля 2010 г. 20:03, спустя 6 минут 39 секунд

    SpartakuS, ботяра
    Сапожник без сапог
  • Ewg777

    Сообщения: 510 Репутация: N Группа: Джедаи

    Spritz 13 февраля 2010 г. 20:19, спустя 15 минут 10 секунд

    Как проверяешь?
    var_dump($_GET['test']);
    Это строка.
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 13 февраля 2010 г. 20:25, спустя 6 минут 23 секунды

    phpdude, а о чем вы здесь говорите? :D
    Ewg777, в итоге я проверяю $a=='0' .
    var_dump говорит string(1) "0", но это мне стало понятно, только когда я решение нашел (в постах Дуда и Эдво).
    А про вар_дамп я почему то забываю все время. Я понимаю, что это не правильно и думаю, что скоро привыкну.
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 13 февраля 2010 г. 20:33, спустя 7 минут 38 секунд

    Вот интересная деталь
    Что такое === - это равно не только по символам, но и по типу.
    Что такое == - это когда равно по символам.
    Так почему же не работал мой самый первый вариант (он же предложен Эдво)?
    $a == 0

    Пока начинал писать первую строчку - понял. Но думаю может кому пондобится.
    0 в этом примере обрабатывается как false и поэтому оно не приравнивается.
  • disc

    Сообщения: 843 Репутация: N Группа: Джедаи

    Spritz 13 февраля 2010 г. 23:26, спустя 2 часа 52 минуты 56 секунд

    (int)$_REQUEST['var'] == 0
    либо is_numeric($_REQUEST['var'])
  • Ewg777

    Сообщения: 510 Репутация: N Группа: Джедаи

    Spritz 14 февраля 2010 г. 10:52, спустя 11 часов 26 минут 44 секунды


    (int)$_REQUEST['var'] == 0
    либо is_numeric($_REQUEST['var'])
    Без оговнокодивания никак…
    А про вар_дамп я почему то забываю все время.
    Боюсь даже спросить как проходит у Вас дебаг.
    Спустя 166 сек.
    is_numeric('0.123'); // true
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 14 февраля 2010 г. 12:19, спустя 1 час 26 минут 18 секунд

    Ewg777, через принт_р(
  • disc

    Сообщения: 843 Репутация: N Группа: Джедаи

    Spritz 14 февраля 2010 г. 17:20, спустя 5 часов 1 минуту 18 секунд



    (int)$_REQUEST['var'] == 0
    либо is_numeric($_REQUEST['var'])
    Без оговнокодивания никак..


    Не понял причем тут "оговнокодивания" если все что в URI передается от веб-сервера к интерпретатору как тип "строка". Если ты в поле ожидаешь integer то и приводи поле к integer. (int)$var - это не говнокод, а явное приведение типа.
  • Ewg777

    Сообщения: 510 Репутация: N Группа: Джедаи

    Spritz 14 февраля 2010 г. 17:32, спустя 12 минут 21 секунду




    (int)$_REQUEST['var'] == 0
    либо is_numeric($_REQUEST['var'])
    Без оговнокодивания никак..


    Не понял причем тут "оговнокодивания" если все что в URI передается браузеру как тип "строка". Если ты в поле ожидаешь integer то и приводи поле к integer. (int)$var - это не говнокод, а явное приведение типа.
    1. is_numeric - точно не вариант. Согласны?
    2. Когда читаешь код и видишь выражение
     (int)$_REQUEST['var'] == 0
    , то приходится задуматься, а что оно делает? Когда видишь
    $_REQUEST['var'] === '0'
    ответ на тот же вопрос становится очевидным.
    3. Ваш вариант (№1) позволит сделать десяток левых адресов вида ?var=adult и они все пройдут под это условие. SEOшники за такое по голове погладят.

Пожалуйста, авторизуйтесь, чтобы написать комментарий!