Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Как правильно вывести всевозможные варианты массива?
Форумы портала PHP.SU » » Вопросы новичков » Как правильно вывести всевозможные варианты массива?

Страниц (1): [1]
 

1. goodsam - 22 Декабря, 2014 - 17:17:26 - перейти к сообщению
На входе получаю массив вида:

CODE (htmlphp):
скопировать код в буфер обмена
  1. (
  2.     [0] => Array
  3.         (
  4.             [0] => привет
  5.             [1] => здравствуй
  6.         )
  7.  
  8.     [1] => Array
  9.         (
  10.             [0] => мой
  11.             [1] => уважаемый
  12.         )
  13.  
  14.     [2] => Array
  15.         (
  16.             [0] => друг
  17.             [1] => приятель
  18.         )
  19.  
  20. )


Задача сделать варианты:
привет мой друг
привет мой приятель
привет уважаемый друг
привет уважаемый приятель
здравствуй мой друг
здравствуй мой приятель
здравствуй уважаемый друг
здравствуй уважаемый приятель

Элементов в дочернем массиве может быть больше, а также как и в основном массиве элементов может быть больше.

Предполагаю что делается рекурсивно но как эту рекурсию сделать? Хммм...
2. RickMan - 22 Декабря, 2014 - 17:50:24 - перейти к сообщению
Почитайте про рекурсию. Решение будет в пару строк. Как доберусь домой, постараюсь не забыть и отписать решение, если его еще не будет.
3. goodsam - 22 Декабря, 2014 - 21:31:07 - перейти к сообщению
RickMan пишет:
Почитайте про рекурсию. Решение будет в пару строк. Как доберусь домой, постараюсь не забыть и отписать решение, если его еще не будет.

Читал уже, но именно так как мне надо не получается сделать.
4. 3d_killer - 22 Декабря, 2014 - 21:40:52 - перейти к сообщению
недавно мне скидывали:
PHP:
скопировать код в буфер обмена
  1.  
  2. $a=array('привет','здравствуй');
  3. $b=array('мой','уважаемый');
  4. $c=array('друг','приятель');
  5. $params=array($a,$b,$c);
  6.  
  7. $res=array();
  8.  
  9. function recurs($params,$num,$sub_res,&$res)
  10.         {
  11.         foreach($params[$num] as $pos=>$sub_param)
  12.                 {
  13.                 $sub_res1=$sub_res;
  14.                 $sub_res1[]=$sub_param;
  15.                 if($num==count($params)-1)
  16.                         {
  17.                         $res[]=$sub_res1;
  18.                         }
  19.                 else
  20.                         recurs($params,$num+1,$sub_res1,$res);
  21.                 }
  22.         }
  23.  
  24. recurs($params,0,array(),$res);
  25. echo("<pre>");
  26. var_dump($res);
  27. echo("</pre>");


CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. array (size=8)
  3.   0 =>
  4.     array (size=3)
  5.       0 => string 'привет' (length=12)
  6.       1 => string 'мой' (length=6)
  7.       2 => string 'друг' (length=8)
  8.   1 =>
  9.     array (size=3)
  10.       0 => string 'привет' (length=12)
  11.       1 => string 'мой' (length=6)
  12.       2 => string 'приятель' (length=16)
  13.   2 =>
  14.     array (size=3)
  15.       0 => string 'привет' (length=12)
  16.       1 => string 'уважаемый' (length=18)
  17.       2 => string 'друг' (length=8)
  18.   3 =>
  19.     array (size=3)
  20.       0 => string 'привет' (length=12)
  21.       1 => string 'уважаемый' (length=18)
  22.       2 => string 'приятель' (length=16)
  23.   4 =>
  24.     array (size=3)
  25.       0 => string 'здравствуй' (length=20)
  26.       1 => string 'мой' (length=6)
  27.       2 => string 'друг' (length=8)
  28.   5 =>
  29.     array (size=3)
  30.       0 => string 'здравствуй' (length=20)
  31.       1 => string 'мой' (length=6)
  32.       2 => string 'приятель' (length=16)
  33.   6 =>
  34.     array (size=3)
  35.       0 => string 'здравствуй' (length=20)
  36.       1 => string 'уважаемый' (length=18)
  37.       2 => string 'друг' (length=8)
  38.   7 =>
  39.     array (size=3)
  40.       0 => string 'здравствуй' (length=20)
  41.       1 => string 'уважаемый' (length=18)
  42.       2 => string 'приятель' (length=16)
  43.  

(Добавление)
в этой теме (решение не мое но успешно использую) http://forum.php.su/topic.php?fo...70304#1417870304 Улыбка
5. azsxdc - 22 Декабря, 2014 - 21:52:42 - перейти к сообщению
Лично я пользуюсь rand в индексках при генерации случайных строк. Гонять покругу массивами инфу которая никому не актуальна по мне так трата времени. Это я так...
6. goodsam - 22 Декабря, 2014 - 22:25:02 - перейти к сообщению
3d_killer
Спасибо, то что мне нужно. Стоит еще со ссылками разобраться мне.
7. RickMan - 22 Декабря, 2014 - 22:33:19 - перейти к сообщению
azsxdc может вы еще и сортировку рандом делаете?
goodsam, а говорили что рекурсия не подходит Радость

 

Powered by ExBB FM 1.0 RC1