3v4l.org

run code in 300+ PHP versions simultaneously
<?php function decartProductPair($one, $two) { $result=[]; for($i=0; $i<count($one); $i++) { for($j=0; $j<count($two); $j++) { $result[]=array_merge((array)$one[$i], (array)$two[$j]); } } return array_values($result); } function decartProduct() { $args = func_get_args(); if(!count($args)) { return []; } $result = array_shift($args); while($arg=array_shift($args)) { $result=decartProductPair($result, $arg); } return $result; } $data = array( 2 => array( 0 => 'Body', 1 => 'Face' ), 5 => array( 0 => '*', 1 => '**', 2 => '***' ), 7 => array( 0 => 'Europe', 1 => 'Asia' ) ); $result = array_map(function($set) { return join(',', $set); }, call_user_func_array('decartProduct', array_values($data))); var_dump($result);

preferences:
38.18 ms | 402 KiB | 5 Q