- print_r: documentation ( source)
- floor: documentation ( source)
<?php
$option_array[] = array(
"name" => "delivery",
"options" => array(
"sat", "sun")
);
$option_array[] = array(
"name" => "colour",
"options" => array(
"red", "blue", "green")
);
$option_array[] = array(
"name" => "size",
"options" => array(
"small", "medium", "large")
);
$N = 1;
foreach ($option_array as $options) $N *= count($options['options']);
$all_combinations = array();
for( $i = 0 ; $i < $N ; ++$i )
{
$all_combinations[$i] = array();
$q = $i;
for( $j = count($option_array)-1 ; 0 <= $j ; --$j )
{
$opt = $option_array[$j];
$nopts = count($opt['options']);
$all_combinations[$i][$opt['name']] = $opt['options'][$q % $nopts];
$q = floor($q / $nopts);
}
}
print_r( $all_combinations );