Выбор ответа Junior Строки спрашивают часто обновлено
Классическая ловушка strpos
Вопрос
Почему этот код считает, что в строке "admin" нет подстроки "a"?
if (!strpos("admin", "a")) {
echo "нет буквы a";
}
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: strpos вернула 0, а !0 это true. Найденная в начале строки подстрока имеет позицию 0, а 0 ложное значение.
Варианты ответа
strposчувствительна к регистру буквstrposищет только с конца строки- Нужно передавать аргументы в обратном порядке
strposвернула 0, а!0этоtrueправильный ответ
Разбор
Найденная в начале строки подстрока имеет позицию 0, а 0 ложное значение. Правильная проверка: strpos($s, "a") === false. С PHP 8 есть str_contains, str_starts_with и str_ends_with, которые возвращают bool. Регистр здесь совпадает, а порядок аргументов верный: сначала строка, потом подстрока.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.