Как сложить все значения неизвестного числа массивов

  • Автор темы Автор темы qru
  • Дата начала Дата начала
rotoZOOM, спасибо сейчас изучу... А то что-то не получается у меня разобраться пока с этой интересной темой.

Жаль там не на php чет запутано получается..

-~{}~ 18.11.08 19:06:

Ну вроде бы сделал.. Немножко криво наверное.. Но вроде работает.. Пока на вывод, но сейчас сделаю чтобы в массив сохранялось..

PHP:
##########################################
function gen_slov($mas, $i=0, $bukva="")
##########################################
	{

foreach ($mas[$i] as $key[$i] => $bukva[$i])		
		{	
if ($mas[$i+1]) // если есть следующая буква (след массив)
			{			
gen_slov($mas, $i+1, $bukva); // повторяем для следующего, массив уже полученных букв храним в памяти ($bukva)
			}
else	// если собрали уже все количество букв	
			{
foreach ($bukva as $k => $bukvaval) // выводим все буквы по порядку
				{	
echo "$bukvaval";	
				}
echo "<br />";
			}
		}
	}	
##########################################Вызов:
gen_slov($mas);

-~{}~ 18.11.08 19:39:

Не могу теперь понять как сделать return результатов из рекурсивной фунции. Echo то делается хорошо.. А вот сохранение результатов в массив никак не получается.. Может поможете?
 
а как насчет дополнительной переменной (которая будет по ссылке передаваться) как третий параметр функции?
твой код не запускал, насколько понимаю, когда ты <br /> выводишь - значит слово в этом месте можешь собрать.. вот и добавляй его в массив...
 
Crys, все верно.. Только вот не знаю как бы это слово вывести.. Если собираю там слово (а точнее там несколько слов за раз собираются) как их передать в массиве на верх да еще и сделать так чтобы они в массив слов в конец добавились..

Если просто сделать


PHP:
##########################################
function gen_slov($mas, $i=0, $bukva="")
##########################################
	{

foreach ($mas[$i] as $key[$i] => $bukva[$i])		
		{	
if ($mas[$i+1]) // если есть следующая буква (след массив)
			{			
gen_slov($mas, $i+1, $bukva); // повторяем для следующего, массив уже полученных букв храним в памяти ($bukva)
			}
else	// если собрали уже все количество букв	
			{
foreach ($bukva as $k => $bukvaval) // выводим все буквы по порядку
				{
$temp .= $bukvaval;
PHP:
                                                                 }
$domen[] = $temp;
echo "$temp<br />";
$temp = "";
PHP:
                                                  }
		}
	}	
##########################################

то индексы массива будут просто заменяться каждый раз при вызове функцией самой себя. Тоже самое если возвращать этот массив и приравнивать то что выдает функция массиву переменной (там где она вызывается из самой себя). В общем чет я конкретно запутался..

-~{}~ 19.11.08 22:42:

Так и не решил проблему.. Жаль некому помочь с этими странными функциями.. не понимаю как делать return при вызове функцией самой себя.
 
не понимаю как делать return при вызове функцией самой себя.
так же как и любой другой, использовать для построения нужной структуры. любая ф-я принимает параметры и возвращает результат. в чисто функциональном программировании ф-я не обращается ни к каким глобальным или статическим переменным, не изменяет для вызывающего никакие параметры, просто возвращает результат, который используется вызывающим.
 
Вот именно что никакой глобальной переменной для всей функции включая внутренние вызовы нет.. И не понятно как к ним обратиться..

У меня формируется функцией при внутренем вызове массив, потом еще один, и еще.. А мне то нужно чтобы был всего один массив. Я пытался даже складывать эти массивы получаемые во внутрених вызовах. По разному в том числе array_merge_recursive() - но что-то никак не получается получить простой массив с элементами по порядку..

Мне больше всего мешает что не получается добавлять элемент в массива через вызов masxxx[] без параметра в [] как в обычной функции (т.к. об этом массиве при самовызове функция не знает каждый раз)..

-~{}~ 20.11.08 01:51:

Все вроде догнал.. Пока писал осенило, что надо делать просто вызов так $masxxx= gen_slov($mas, $i+1, $bukva, $masxxx); тогда masxxx[] будет наполняться с каждым вызовом. Спасибо, dimagolov, помог догнать..
 
Сверху