Рекурсивня функция

Я програмирую на

  • php

    Голосов: 8 100,0%
  • asp

    Голосов: 0 0,0%

  • Всего проголосовало
    8

kleon

Создатель
Регистрация
30 Ноя 2011
Сообщения
21
Реакции
15
Всем привет.
Помогите написать функцию для такой задачки. Чтоб можно было размерность массива увеличивать и увеличивать.


$a[color]=array(7,2,3,4,5);
$a[size]=array(4,5);
$a[volum]=array(7,4,5);
$a[material]=array(7,2);



foreach($a[color] as $e1) {
foreach($a[size] as $e2) {
foreach($a[volum] as $e3) {
foreach($a[material] as $e4) {
print $e1.'-'.$e2.'-'.$e3.'-'.$e4.'<br />';
}
}
}
}


Спасибо
 
Мозг взорван.
Как увеличивать? Какую размерность?
 
PHP:
foreach($a as $key => $val) 
 {
  if (is_array($val))
  foreach($val as $v) 
  {
   print $v;
   }
 }
По сути этот код тоже выведет все элемены этого массива, или вам важен порядок в котором элементы выводятся?
 
Вот такой должен быть результат

7-4-7-7
7-4-7-2
7-4-4-7
7-4-4-2
7-4-5-7
.........
.........
5-5-5-2
 
Вот такой должен быть результат
+1 Мозг взорван!
Полную логику пошите. То что вы описали выше и привели в пример сейчас совершенно разное. Вы выводите масивы с разным колличеством эллементов при этом колличество символов на строку одинаковое. Тобиш после смещения у вас берутся повторно данные.
Кароче либо у вас в голове каша либо описывайте подробно.
 
Для тех у кого взорван мозг. И тем кому действительно была интереса моя тема. И отдельное спасибо тем кто попытался помочь.

$a[color] = array(1, 2, 3, 4, 5);
$a[size] = array(6, 7);
$a[volum] = array(8, 9, 10);
$a[material] = array(11, 12);


Recursive($a);

function Recursive($a, $key = "", $print = "", $rec = 0)
{
$rec++;
$start = false;
foreach ($a as $k => $v)
{
if ($start || empty($key)) {
foreach ($v as $p)
{
if ($rec >= count($a))
{
echo $print . $p . " <br> ";
} else
{
Recursive($a, $k, $print . $p . " - ", $rec);
}
}
}
if ($k == $key) {
$start = true;
}
}
}
 
Назад
Сверху