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

Тема в разделе "Как сделать...", создана пользователем kleon, 1 мар 2012.

?

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

  1. php

    8 голосов
    100,0%
  2. asp

    0 голосов
    0,0%
  1. kleon

    kleon Создатель

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


    $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 />';
    }
    }
    }
    }


    Спасибо
     
  2. a_n_d_y

    a_n_d_y

    Регистр.:
    26 мар 2006
    Сообщения:
    465
    Симпатии:
    61
    Мозг взорван.
    Как увеличивать? Какую размерность?
     
  3. PHPCod3r

    PHPCod3r

    Регистр.:
    7 июн 2010
    Сообщения:
    261
    Симпатии:
    25
    PHP:
    foreach($a as $key => $val
     {
      if (
    is_array($val))
      foreach(
    $val as $v
      {
       print 
    $v;
       }
     }
    По сути этот код тоже выведет все элемены этого массива, или вам важен порядок в котором элементы выводятся?
     
  4. kleon

    kleon Создатель

    Регистр.:
    30 ноя 2011
    Сообщения:
    21
    Симпатии:
    11
    Вот такой должен быть результат

    7-4-7-7
    7-4-7-2
    7-4-4-7
    7-4-4-2
    7-4-5-7
    .........
    .........
    5-5-5-2
     
  5. Inviseble_Demon

    Inviseble_Demon

    Регистр.:
    11 дек 2008
    Сообщения:
    482
    Симпатии:
    350
    +1 Мозг взорван!
    Полную логику пошите. То что вы описали выше и привели в пример сейчас совершенно разное. Вы выводите масивы с разным колличеством эллементов при этом колличество символов на строку одинаковое. Тобиш после смещения у вас берутся повторно данные.
    Кароче либо у вас в голове каша либо описывайте подробно.
     
  6. kleon

    kleon Создатель

    Регистр.:
    30 ноя 2011
    Сообщения:
    21
    Симпатии:
    11
    Для тех у кого взорван мозг. И тем кому действительно была интереса моя тема. И отдельное спасибо тем кто попытался помочь.

    $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;
    }
    }
    }