Forum Webscript.Ru

Программирование => PHP => Тема начата: MishaZ от 27 Августа 2002, 05:44:24

Название: Ни как не пойму это мой баг или....?
Отправлено: MishaZ от 27 Августа 2002, 05:44:24
Или баг Зенда =)

Доброе время суток всем знатокам ПХП, да и просто ВСЕМ.
Дело вот в чём, у меня есть массив Фамилий некоторой базы, по которой я хочу организовать приметивненький поиск, его примерный код внизу (переменная $name- введённая для поиска фамилия), так вот проблема в том что этот скрипт не ищет фамилии с первой буквы...поясняю , если я ввожу "Иванов"  то он ни чего не выдваёт , а если "ванов", то выдаёт и всех "Ивановых" и всех "Ливановых" , вообщем все фамилии в которых встречается это буквосочетание.
Помогите плз......
============Примерный код=============
for ($i=0;$iif (strpos($fio[$i],$name)!=false){
echo  "Эта фамилия !!!".$base->fio[$i]."
";
}
Название: Ни как не пойму это мой баг или....?
Отправлено: Макс от 27 Августа 2002, 06:21:19
попробуй
if (strpos($fio[$i],$name) === true){
Название: Ни как не пойму это мой баг или....?
Отправлено: Доктор от 27 Августа 2002, 21:11:38
Какое true???
!== используй...

for ($i=0;$iif (strpos($fio[$i],$name)!==false){
echo "Эта фамилия !!!".$base->fio[$i]."
";
}
Название: Ни как не пойму это мой баг или....?
Отправлено: rembo от 28 Августа 2002, 07:28:23
Совершенно верно Макс говорит. Это "багофича" ПХП, если искомая подстрока найдена в самом начале strpos возвращает значение 0 (позицию начала подстроки в строке) а не false, а if с оператором "!=" думает, что 0 это то же что и false. Необходимо проверять точное соответствие "типа" оператором "===" (ну или "!==").
Название: Ни как не пойму это мой баг или....?
Отправлено: Доктор от 28 Августа 2002, 16:37:05
Это не багофича. Это совершенно логичное и правильное дело.
Название: Ни как не пойму это мой баг или....?
Отправлено: MishaZ от 28 Августа 2002, 22:18:23
Вах..спасибо всем огромное...=)
Название: Ни как не пойму это мой баг или....?
Отправлено: a@mail.dux.ru от 20 Марта 2003, 17:13:39
Доктор

А может лучше писать

for ($i=0;$i

if (strpos($fio[$i],$name)>-1){


echo "Эта фамилия !!!".$base->fio[$i]."
";
}
Название: Ни как не пойму это мой баг или....?
Отправлено: Меняздесьдавнонет от 20 Марта 2003, 18:30:36
Нет, не лучше.
Название: Ни как не пойму это мой баг или....?
Отправлено: Alexandr от 21 Марта 2003, 08:30:53
в таком случае проще юзать stristr (strstr)