fork download
  1. <?php
  2. $data = array(
  3. array('New York', 'New York City'),
  4. array('hotel', 'lodging','motel'),
  5. array('cheap'),
  6. array('accomodation', 'rooms'),
  7. array('two-bedroom')
  8. );
  9.  
  10. $cols = array(array_shift($data));
  11. while($row = array_shift($data))
  12. array_walk(count($cols)<=1 ? $cols : array_slice($cols, 1),
  13. function($col) use($row, &$cols){
  14. foreach($col as $i => $prev)
  15. foreach($row as $j => $word)
  16. $tmp[count($cols)===1?$i:$j][] = "$prev $word";
  17. foreach($tmp as $t) $cols[] = $t;
  18. });
  19.  
  20. print_r($cols);
Success #stdin #stdout 0.02s 20520KB
stdin
Standard input is empty
stdout
Array
(
    [0] => Array
        (
            [0] => New York
            [1] => New York City
        )

    [1] => Array
        (
            [0] => New York hotel
            [1] => New York lodging
            [2] => New York motel
        )

    [2] => Array
        (
            [0] => New York City hotel
            [1] => New York City lodging
            [2] => New York City motel
        )

    [3] => Array
        (
            [0] => New York hotel cheap
            [1] => New York lodging cheap
            [2] => New York motel cheap
        )

    [4] => Array
        (
            [0] => New York City hotel cheap
            [1] => New York City lodging cheap
            [2] => New York City motel cheap
        )

    [5] => Array
        (
            [0] => New York hotel accomodation
            [1] => New York lodging accomodation
            [2] => New York motel accomodation
        )

    [6] => Array
        (
            [0] => New York hotel rooms
            [1] => New York lodging rooms
            [2] => New York motel rooms
        )

    [7] => Array
        (
            [0] => New York City hotel accomodation
            [1] => New York City lodging accomodation
            [2] => New York City motel accomodation
        )

    [8] => Array
        (
            [0] => New York City hotel rooms
            [1] => New York City lodging rooms
            [2] => New York City motel rooms
        )

    [9] => Array
        (
            [0] => New York hotel cheap accomodation
            [1] => New York lodging cheap accomodation
            [2] => New York motel cheap accomodation
        )

    [10] => Array
        (
            [0] => New York hotel cheap rooms
            [1] => New York lodging cheap rooms
            [2] => New York motel cheap rooms
        )

    [11] => Array
        (
            [0] => New York City hotel cheap accomodation
            [1] => New York City lodging cheap accomodation
            [2] => New York City motel cheap accomodation
        )

    [12] => Array
        (
            [0] => New York City hotel cheap rooms
            [1] => New York City lodging cheap rooms
            [2] => New York City motel cheap rooms
        )

    [13] => Array
        (
            [0] => New York hotel two-bedroom
            [1] => New York lodging two-bedroom
            [2] => New York motel two-bedroom
        )

    [14] => Array
        (
            [0] => New York City hotel two-bedroom
            [1] => New York City lodging two-bedroom
            [2] => New York City motel two-bedroom
        )

    [15] => Array
        (
            [0] => New York hotel cheap two-bedroom
            [1] => New York lodging cheap two-bedroom
            [2] => New York motel cheap two-bedroom
        )

    [16] => Array
        (
            [0] => New York City hotel cheap two-bedroom
            [1] => New York City lodging cheap two-bedroom
            [2] => New York City motel cheap two-bedroom
        )

    [17] => Array
        (
            [0] => New York hotel accomodation two-bedroom
            [1] => New York lodging accomodation two-bedroom
            [2] => New York motel accomodation two-bedroom
        )

    [18] => Array
        (
            [0] => New York hotel rooms two-bedroom
            [1] => New York lodging rooms two-bedroom
            [2] => New York motel rooms two-bedroom
        )

    [19] => Array
        (
            [0] => New York City hotel accomodation two-bedroom
            [1] => New York City lodging accomodation two-bedroom
            [2] => New York City motel accomodation two-bedroom
        )

    [20] => Array
        (
            [0] => New York City hotel rooms two-bedroom
            [1] => New York City lodging rooms two-bedroom
            [2] => New York City motel rooms two-bedroom
        )

    [21] => Array
        (
            [0] => New York hotel cheap accomodation two-bedroom
            [1] => New York lodging cheap accomodation two-bedroom
            [2] => New York motel cheap accomodation two-bedroom
        )

    [22] => Array
        (
            [0] => New York hotel cheap rooms two-bedroom
            [1] => New York lodging cheap rooms two-bedroom
            [2] => New York motel cheap rooms two-bedroom
        )

    [23] => Array
        (
            [0] => New York City hotel cheap accomodation two-bedroom
            [1] => New York City lodging cheap accomodation two-bedroom
            [2] => New York City motel cheap accomodation two-bedroom
        )

    [24] => Array
        (
            [0] => New York City hotel cheap rooms two-bedroom
            [1] => New York City lodging cheap rooms two-bedroom
            [2] => New York City motel cheap rooms two-bedroom
        )

)