Неверно соблюдается условие в методе -- strlen не работает
Primary tabs
Иллюстрация примера из С.Хольцнер "PHP в примерах", стр. 218 - 219
Подскажите, в чём ошибка: в методе set_name() указано условие strlen(\$text) меньше 9, но по факту не пропускаются \$text и с меньшей длиной.
<?php /* Упражнения в ООП. Классы. Объекты. Свойства. Методы. */ class Animal { var $name; function set_name($text) { if (strlen($text) < 9) { $this -> name = $text; } } function get_name() { return $this -> name; } } $lion = new Animal; $lion -> set_name("Геннадий"); echo "Имя льва: ", $lion -> get_name(), "<br>"; echo "Имя льва напрямую из свойства: ", $lion -> name, "<br>";
- Log in to post comments
- 3450 reads
vedro-compota
Tue, 04/25/2017 - 12:11
Permalink
Для начала делаем отладку:
Для начала делаем отладку:
и выясняем, что функция явно возвращает в число сильно большее, чем на деле.
Это связано с тем. что в реальности идёт подсчёт байт, а русские буквы занимают 2 байта каждая (а не 1) -- а потому используем mb_strlen().
_____________
матфак вгу и остальная классика =)