|
|
|
| Код привожу в очень сжатом виде, чтобы была видна только суть вопроса.
Не могу понять, как работает рекурсия и как правильно прописать рекурсивный вызов, чтобы получить ожидаемый результат.
<?php
function expl_str($str,$array)
{
$new_str = '';
$strl_str = strlen($str);
if($strl_str == 5) $array[] = $str;
else if($strl_str > 5)
{
// условия и в конечном итоге
$array[] = substr($str,0,6);
$new_str = substr($str,6);
}
if(strlen($new_str) > 4) expl_str($new_str,$array);
else if(!empty($array)) // если не убрать else - то не возвращается вообще ничего
{
// тут еще ряд проверок на кол-во елементов в массиве,
// но в конечном итоге результирующий массив - $result
}
else $result = array(0,0,0,0);
// если здесь вывести print_r($result); то все выводится верно, но в обратном порядке: от последнего нужного результата к первому
return $result; // возвращает первый результат вместо последнего
}
list($v1,$v2,$v3,$v4) = expl_str($str,array());
echo $v1.'<br />';
echo $v2.'<br />';
echo $v3.'<br />';
echo $v4.'<br />';
|
| |
|
|
|
|
|
|
|
для: Читатель
(05.04.2011 в 03:26)
| | Легла спать. Приснился Trianon, грозящий мне указкой. Проснулась. Исправила.
if(strlen($new_str) > 4) $array = expl_str($new_str,$array);
|
Все заработало. Trianon, спасибо. | |
|
|
|
|
|
|
|
для: Читатель
(05.04.2011 в 04:03)
| | Лучший пост на этом форуме ever! | |
|
|
|