Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Рекурсивная функция не возвращает значение
 
 автор: Борис Гаврилов   (02.03.2010 в 15:52)   письмо автору
 
 

Здравствуйте!
Столкнулся со следующей проблемой...Рекурсивная функция не возвращает значение, значение всегда = NULL, если имеет место рекурсивный вызов функции. Эта функция убирает из массива с любым к-вом элементов столько элементов, чтобы к-во оставшихся равнялось $elements_count; тоесть если к-во элементов больше 10, всегда возвращается NULL.

function select_random_elements($array=array(), $elements_count=10)
{
    if (count($array)>$elements_count)
    {
        array_splice($array, mt_rand(1, count($array)), 1);
        
        if (count($array)>$elements_count)
            select_random_elements($array, $elements_count);
        else
            return $array;            
    }
    else
        return $array;
}

Теперь определение массива и вызов функции

$array=array('0', '1', '2', ''3, '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17'........);
$new_array=select_random_elements($array, 5);


Переменная $new_array в резульате выполенения =NULL, но не потому, что алгоритм функции неверный (если строку return $array; в функции заменить на print '<pre>'; print_r($array); print '</pre>'; то видно, что все операции верны, просто результат не возвращается). В чём может быть проблема? Спасибо.!

  Ответить  
 
 автор: sim5   (02.03.2010 в 16:21)   письмо автору
 
   для: Борис Гаврилов   (02.03.2010 в 15:52)
 

А не проще взять из массива необходимый срез?

  Ответить  
 
 автор: Loki   (02.03.2010 в 16:22)   письмо автору
 
   для: Борис Гаврилов   (02.03.2010 в 15:52)
 

<?
static $array

Вот поэтому и не работает...
сначала передали массив в качестве параметра, а потом грохнули его...

UPD о... гляжу код вы уже поправили. осталось еще немного допилить:)

<?
 select_random_elements
($array$elements_count); 

значение прибивается вот тут, так как возвращается вникуда.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования