Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Почему проверка в моем случае срабатывает и выдает true?

Иван Иванов Ученик (90), на голосовании 4 года назад
Необходимо искать в тексте слово и если слово найдено, то выдавать true, в противном случае false. Мой код всегда выдает true, подскажите пожалуйста, почему так происходит и как исправить?

$COMMENT = 'aaaaa';

$a = strripos($COMMENT, '123');

if(isset($a) && $a !== '') {
echo $a, "true"; } else {
echo "fail";
}
Голосование за лучший ответ
adler relda Профи (881) 4 года назад
если а не равно пустоте - то труе... а чего вы еще ждали, если а не равно пустоте? а обсуждать, как исправить, бессмысленно, ибо ты даже не понял, что напис... эээ передрал откуда-то - вот как правильнее сказать!
Иван ИвановУченик (90) 4 года назад
Но а пустое, потому что 123 в тексте "ааааа" не найдено?
Navaron Мыслитель (7359) 4 года назад
может " " двойные кавычки? а не if(isset($a) && $a !== ''
Иван ИвановУченик (90) 4 года назад
!== "" так тоже не работает
PuZZle Мыслитель (7147) 4 года назад
проверка в твоем случае должна выглядеть так:
if($a === false) {
echo "fail";
} else {
echo $a, "true";
}
Иван ИвановУченик (90) 4 года назад
А как это if(!$a) работает?
PuZZle Мыслитель (7147) Иван Иванов, ответ поправил, !$a будет выдавать неверный результат если найдет значение на позиции 0, ибо! 0 === true
PuZZleМыслитель (7147) 4 года назад
strripos возвращает false только в том случае если ничего не находит, в остальных случаях возвращает число, которое обозначание номер позиции в строке). Поэтому читай как
ЕСЛИ ( значение не найдено )
Иван Иванов Ученик (90) PuZZle, а $a !=== false или как то так можно?
Похожие вопросы