Почему срабатывает условие, хотя, по идее, не должно?

В чем я ошибаюсь не могу ни как сообразить.
Есть адрес $adress='г. Гусев, ул. Вокзальная, 3'
$adress=explode(',',$adress);
foreach ($adress as $value){
        var_dump ('value-'.$value);
            if (strpos($value,'г ')!== 0 || strpos($value,'г. ')!== 0){
                var_dump ('find data');
            }
        }

И получаю ответ :
"value-г. Гусев"
"find data"
"value- ул. Вокзальная"
"find data"
"value- 3"
"find data"
Подскажите где моя ошибка?
  • Вопрос задан
  • 125 просмотров
Решения вопроса 1
ipatiev
@ipatiev Куратор тега PHP
Потомок старинного рода Ипатьевых-Колотитьевых
Надо учиться отлаживать свой код самостоятельно.
Ну то есть вы уже начали, это очень хорошо.
Но выводить просто 'find data' не очень информативно. Вам надо понять, почему оно выводится.
Добавьте к var_dump ('find data'); результат strpos($value,'г ') и посмотрите на результат. причина сразу станет ясна.

И соответственно, код надо будет доработать, чтобы получить желаемый результат.
Кстати, если у вас 8 версия РНР, то в нем есть готовая функция для такой проверки, вместо strpos
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
delphinpro
@delphinpro Куратор тега PHP
frontend developer
Поменяйте ноль на false в условиях, и заработает
https://www.php.net/manual/ru/function.strpos.php
Или используйте str_starts_with / str_contains (php8)
https://www.php.net/manual/ru/function.str-starts-... или
https://www.php.net/manual/ru/function.str-contains.php
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы