|
|
|
| Здравствуйте!
Столкнулся со следующей проблемой...Рекурсивная функция не возвращает значение, значение всегда = 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>'; то видно, что все операции верны, просто результат не возвращается). В чём может быть проблема? Спасибо.! | |
|
|
|
|
|
|
|
для: Борис Гаврилов
(02.03.2010 в 15:52)
| | А не проще взять из массива необходимый срез? | |
|
|
|
|
|
|
|
для: Борис Гаврилов
(02.03.2010 в 15:52)
| |
Вот поэтому и не работает...
сначала передали массив в качестве параметра, а потом грохнули его...
UPD о... гляжу код вы уже поправили. осталось еще немного допилить:)
<?
select_random_elements($array, $elements_count);
|
значение прибивается вот тут, так как возвращается вникуда. | |
|
|
|