Покинул форум
Сообщений всего: 104
Дата рег-ции: Июнь 2013
Помог: 0 раз(а)
Описываю ф-ю substr своими силам без изпользования функций вообще. И тут проблемка, описываю в ф-и substr функцию strlen, но этот strlen выдает NOTICE...ума не приложу как это исправить, хоть и ответ правильный.
П.С: протэстируйте пожалуйста мою описанную ф-ю substr на соответствие оригиналу, буду очень признателен)
Вот код:
Покинул форум
Сообщений всего: 2083
Дата рег-ции: Март 2012 Откуда: Воронеж
Помог: 50 раз(а)
MADONZY пишет:
такой ответ: string(1) "s" string(4) "atas"
Лукавите. У EuGen совсем не так.
Мелкий
Отправлено: 08 Августа, 2013 - 12:39:45
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
MADONZY пишет:
Чего именно не существует?
MADONZY пишет:
for($i=0;$data[$i];$i++) {
При любой длине строки настанет та позиция, в которой $data[$i] не существует. Обращение к несуществующему элементу генерирует E_NOTICE
----- PostgreSQL DBA
Okula
Отправлено: 08 Августа, 2013 - 12:42:44
Участник
Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010
Помог: 42 раз(а)
Нужно добавить проверку на существование эллемента в массиве.
MADONZY
Отправлено: 08 Августа, 2013 - 12:52:36
Гость
Покинул форум
Сообщений всего: 104
Дата рег-ции: Июнь 2013
Помог: 0 раз(а)
avtor.fox пишет:
Лукавите. У EuGen совсем не так.
Вовсе нет, я убрал свою my_strlen и воспользовался встроенным strlen, после этого добавил в запрос EuGen-a var_dump 3й параметр в функцию my_substr и мне вывел такой результат...
Мелкий пишет:
При любой длине строки настанет та позиция, в которой $data[$i] не существует.
Так я и добивался того что-бы цикл дошёл до тех пор, пока у $data не закончатся символы. Но как видите, не получается(( Подскажите пожалуйста что следует исправить? Вся ошибка в неправильности ф-и my_strlen, когда её исправим, то все пойдет как по маслу)
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
MADONZY пишет:
Так я и добивался того что-бы цикл дошёл до тех пор, пока у $data не закончатся символы
А проверяете значение символа в этой позиции. Значение, а не существование символа.
isset ещё не встречали?
Кстати, по этой же причине получите неожиданный результат в строке 'it has 0 elements'.
----- PostgreSQL DBA
EuGen
Отправлено: 08 Августа, 2013 - 13:16:33
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
MADONZY
Подсказка по поводу Fatal error - Вы определяете функцию внутри функции, стало быть, если Вашу основную функцию вызвать дважды, произойдёт объявление уже определённой функции. Исправить можно, вынеся объявление одной функции за пределы другой, что я и сделал, чтобы протестировать Вашу функцию.
Как я тестировал - пример:
- на выходе, если бы Ваша функция работала полностью идентично оригинальной substr, я бы получил 0 ошибок и 100%-й результат (то есть 0% ошибок), но я получил
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
MADONZY
Отправлено: 08 Августа, 2013 - 13:43:16
Гость
Покинул форум
Сообщений всего: 104
Дата рег-ции: Июнь 2013
Помог: 0 раз(а)
Мелкий пишет:
isset ещё не встречали?
Мелкий, по-правде говоря, я почему-то думал что это ф-я, а не языковая конструкция, поэтому не видел смысла в её использовании, так как поставил задачу написать всё без функций) Спасибо, благодаря Вам я залез в мануал что-бы освежить память
Вот работающий код (по моему мнению), осталось только что-бы вы его протестировали)
EuGen, можете проверять на var_dump, все работает) (Добавление) EuGen, да, согласен! Они не одинаковы! Но моя ф-я умеет брать символы от КОНЦА до НАЧАЛА строки вводя 3й параметр отрицательным. Как ни как, я только учусь)
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.