Мне это кажется странным, но, возможно, простое объяснение.
Почему следующий блок кода приводит к false
несмотря на то, что игла определенно является частью стога сена?
if(strpos("Ø25xØ2", "Ø")){
echo "true";
} else {
echo "false";
}
strpos находит эту строку со смещением 0, которое оценивается как false. Чтобы действительно определить, не найден ли он, вам нужно явно проверить тип и значение с помощью операторов ===
или !==
, например:
if (strpos("Ø25xØ2", "Ø") !== false) {
echo "true";
} else {
echo "false";
}
Это также хорошо освещено в руководстве.
strpos
вернет 0
если игла находится в самом начале стога сена. Но 0
вычисляет значение boolean false
, поэтому условие if
не выполняется.
Вам нужно сравнить с false
, что является возвращаемым значением, если игла не найдена вообще:
if (false !== strpos("Ø25xØ2", "Ø")) {
echo "true";
} else {
echo "false";
}