2015-12-28 4 views
0

Смотрите следующий вопрос:strpos() безумие - почему это не работает?

$str = "video-23984"; // returns false 
$str = " video-23984"; // returns true 
$search= "video"; 

if(strpos($str,$search)) { 
    echo "True"; 
}else { 
    echo "False"; 
} 

Почему в мире делает $str = "video-23984" вернуться ложным? И что я могу сделать, чтобы оно вернулось?

+1

'is_int (strpos (...))', если вы ищете логический тест, иначе он возвращает bools ** или ** integers (где '0' - вероятный результат). – mario

+1

Что, черт возьми, марио, это не дубликат. Другой вопрос другой, даже если он связан с одной и той же функцией, и это возвращение. – Phiter

+0

Большое предупреждение из [PHP Docs] (http://php.net/manual/en/function.strpos.php) - 'Warning Эта функция может возвращать Boolean FALSE, но может также возвращать небулево значение, которое оценивает до ЛОЖЬ. Пожалуйста, прочитайте раздел о Booleans для получения дополнительной информации. Используйте оператор === для проверки возвращаемого значения этой функции. ' –

ответ

0

В первой строке слово video находится в первом положении, что означает 0.

Во втором положении находится во втором положении, что означает 1. Поскольку вы возвращаете его в if, 0 является логическим для false. Вот почему вы получаете false.

+2

Для получения полного ответа вы должны обсудить различия между' == 'и' === '(и'! = 'И'! == ') –

 Смежные вопросы

  • Нет связанных вопросов^_^