<?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