3

The title may be misleading, but I don`t really know what it is called. I am sorry for that :(

So, I have an array like this

$start = array(
    array('waterpark'),
    array('spain','greece'),
    array('1','2','3','4'),
);

how do i convert that array to be like this

$output = array(
    array('waterpark', 'spain', '1'),
    array('waterpark', 'spain', '2'),
    array('waterpark', 'spain', '3'),
    array('waterpark', 'spain', '4'),
    array('waterpark', 'greece', '1'),
    array('waterpark', 'greece', '2'),
    array('waterpark', 'greece', '3'),
    array('waterpark', 'greece', '4'),
);

Thank you in advance

Sam
  • 8,330
  • 2
  • 26
  • 51
ilmansg
  • 99
  • 8
  • 2
    It is called a Cartesian product. – Sam Jun 17 '15 at 08:57
  • 1
    possible duplicate of [PHP 2D Array output all combinations](http://stackoverflow.com/questions/2516599/php-2d-array-output-all-combinations) – nymk Jun 17 '15 at 09:04

2 Answers2

5

Use readymade Cartesian class .

Use it like,

$output = Cartesian::build($start);

Author: jwage

viral
  • 3,724
  • 1
  • 18
  • 32
2

Try this one it will help you,

    foreach ($start[0] as $value1) { 
        foreach ($start[1] as $value2) {
            foreach ($start[2] as $value3) {
                $res[] = array($value1,$value2,$value3);
            }
        }
   }
   var_dump($res);
Vignesh Bala
  • 889
  • 6
  • 25