За последние 24 часа нас посетили 18047 программистов и 1744 робота. Сейчас ищут 1008 программистов ...

Почему срабатывает условие if, когда результат false?

Тема в разделе "PHP для новичков", создана пользователем borus, 10 июн 2013.

  1. borus

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

    С нами с:
    16 апр 2012
    Сообщения:
    161
    Симпатии:
    0
    Здравствуйте.
    Есть такое условие:
    Код (Text):
    1. if (mb_strpos($this->orderDetails["shipmentName"], 'Самовывоз')>=0){...
    использую >= 0, поскольку подстрока может быть и в начале $this->orderDetails["shipmentName"], в этом случае по описанию функции mb_strpos возвращает 0.
    $this->orderDetails["shipmentName"] это:
    Этот код:
    Код (Text):
    1. var_dump(mb_strpos($this->orderDetails["shipmentName"], 'Самовывоз'));
    выдает FALSE
    Почему же тогда срабатывает вход в ветку if?

    Видно потому что FALSE == 0 в логике php... Как же тогда переправить проверку наличия подстроки? Так?
    Код (Text):
    1. if (mb_strpos($this->orderDetails["shipmentName"], 'Самовывоз')==true&&mb_strpos($this->orderDetails["shipmentName"], 'Самовывоз')>=0){...
     
  2. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    потому что false равно 0 =)

    if (mb_strpos(...) === false ) { точно нету вхождения} { есть }
     
  3. borus

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

    С нами с:
    16 апр 2012
    Сообщения:
    161
    Симпатии:
    0
    Благодарю.
    почему-то такое не срабатывает:
    if (not(mb_strpos(...) === false )) { есть вхождение} else {точно нету вхождения}
    Простите, все никак не перестроюсь на "!"
     
  4. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    if (mb_strpos(...) !== false ) { есть } { точно нету вхождения}
     
  5. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    if (false!==mb_strpos(...)) {.........