[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Зациклилась рекурсия
Страницы: 1, 2
Sladkiy
Цитата (xlebosol @ 25.12.2012 - 00:15)
Так правильно, а что сделано, чтобы там ничего не было. $str=(string)$str;  замени на $str = substr($str,0,-1); и проверь данные var_dump();

$str=(string)$str;
это я привожу int, float к string.
Зачем
$str = substr($str,0,-1);
? Там же будет то же самое.
Invis1ble
По теме: не советую юзать рекурсию, т.к. работа функции будет зависить от длины строки и, соответсвенно, размера стэка вызовов

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

xlebosol
<?php

$str = 'dddd5555555555555';
function myStrlen($str)
{
if($str===true) return 1;
if(is_array($str)) return 0; //Здесь бы какую-нибудь ошибку инициализировать типа Warning ... как сделать?

$str = substr($str,0,-1);

static $cnt=0; $cnt++;

if ($str != "") { //Проверка на конец строки. Может неправильное условие?

myStrlen($str);
}

return $cnt;
}

echo myStrlen($str)
?>
Sladkiy
Цитата (Invis1ble @ 25.12.2012 - 00:23)
По теме: не советую юзать рекурсию, т.к. работа функции будет зависить от длины строки и, соответсвенно, размера стэка вызовов

Всем спасибо за советы, что не надо так делать и ваще лох, что не юзаю встроенной функцию biggrin.gif
Так и не разобрался, где у меня косяк... хз, мб в кодеровке, но тогда вопрос открыт, как в utf-8 посимвольно строку разбирать, раз не $str{0}, $str{1},... только функции готовые не предлагайте, конструкциями языка хочу, или не пацан tongue.gif
Sladkiy
Цитата (xlebosol @ 25.12.2012 - 00:26)
<?php

$str = 'dddd5555555555555';
function myStrlen($str)
{
if($str===true) return 1;
if(is_array($str)) return 0; //Здесь бы какую-нибудь ошибку инициализировать типа Warning ... как сделать?

$str = substr($str,0,-1);

static $cnt=0; $cnt++;

if ($str != "") { //Проверка на конец строки. Может неправильное условие?

myStrlen($str);
}

return $cnt;
}

echo myStrlen($str)
?>

Ну, по-идее должно работать. За вариант спасибо.
inpost
Sladkiy
Не получится, даже получить байт-код тебе всё равно нужно будет воспользоваться функцией. Ну или регулярку примени.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
xlebosol
<?php

$str = 'Hello Word';
function myStrlen($str){
if($str===true) return 1;
if(is_array($str)) return 0; //Здесь бы какую-нибудь ошибку инициализировать типа Warning ... как сделать?
$str=(string)$str;
static $cnt=0;
if ($str{$cnt} != "") { //Проверка на конец строки. Может неправильное условие?
$cnt++;
myStrlen($str);
}
return $cnt;
}
echo myStrlen($str)
?>

У тебя (else) последнего условия не исполняется.
Sladkiy
Цитата (xlebosol @ 25.12.2012 - 00:45)
<?php

$str = 'Hello Word';
function myStrlen($str){
if($str===true) return 1;
if(is_array($str)) return 0; //Здесь бы какую-нибудь ошибку инициализировать типа Warning ... как сделать?
$str=(string)$str;
static $cnt=0;
if ($str{$cnt} != "") { //Проверка на конец строки. Может неправильное условие?
$cnt++;
myStrlen($str);
}
return $cnt;
}
echo myStrlen($str)
?>

У тебя (else) последнего условия не исполняется.

А чё, без него работает? huh.gif
xlebosol
Попробуй
Sladkiy
Цитата (xlebosol @ 25.12.2012 - 00:49)
Попробуй

Да я за другой машиной, тут пхп нету, а регаться на хостингах чё-то лень ради этой проверки.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.