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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как правильно вывести всевозможные варианты массива?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
goodsam
Отправлено: 22 Декабря, 2014 - 17:17:26
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Дек. 2014  


Помог: 0 раз(а)




На входе получаю массив вида:

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. )


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

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

Предполагаю что делается рекурсивно но как эту рекурсию сделать? Хммм...
 
 Top
RickMan
Отправлено: 22 Декабря, 2014 - 17:50:24
Post Id


Участник


Покинул форум
Сообщений всего: 1033
Дата рег-ции: Май 2012  


Помог: 30 раз(а)




Почитайте про рекурсию. Решение будет в пару строк. Как доберусь домой, постараюсь не забыть и отписать решение, если его еще не будет.
 
 Top
goodsam
Отправлено: 22 Декабря, 2014 - 21:31:07
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Дек. 2014  


Помог: 0 раз(а)




RickMan пишет:
Почитайте про рекурсию. Решение будет в пару строк. Как доберусь домой, постараюсь не забыть и отписать решение, если его еще не будет.

Читал уже, но именно так как мне надо не получается сделать.
 
 Top
3d_killer
Отправлено: 22 Декабря, 2014 - 21:40:52
Post Id



Участник


Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011  
Откуда: Ростов-на-Дону


Помог: 21 раз(а)




недавно мне скидывали:
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 Улыбка
 
My status
 Top
azsxdc
Отправлено: 22 Декабря, 2014 - 21:52:42
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Дек. 2014  


Помог: 0 раз(а)




Лично я пользуюсь rand в индексках при генерации случайных строк. Гонять покругу массивами инфу которая никому не актуальна по мне так трата времени. Это я так...

(Отредактировано автором: 22 Декабря, 2014 - 21:53:12)

 
 Top
goodsam
Отправлено: 22 Декабря, 2014 - 22:25:02
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Дек. 2014  


Помог: 0 раз(а)




3d_killer
Спасибо, то что мне нужно. Стоит еще со ссылками разобраться мне.
 
 Top
RickMan
Отправлено: 22 Декабря, 2014 - 22:33:19
Post Id


Участник


Покинул форум
Сообщений всего: 1033
Дата рег-ции: Май 2012  


Помог: 30 раз(а)




azsxdc может вы еще и сортировку рандом делаете?
goodsam, а говорили что рекурсия не подходит Радость
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB