fork download
  1. <?php
  2.  
  3. $arr = [
  4. [
  5. 'meuble' => 18,
  6. ],
  7. [
  8. 'dessert' => 112,
  9. 'desserte' => 13,
  10. 'desert' => 1,
  11. ],
  12. [
  13. 'rouge' => 864,
  14. 'vert' => 52,
  15. ],
  16. ];
  17.  
  18. function combos($data, &$all = array(), $group = array(), $val = null, $i = 0) {
  19. if (isset($val)) {
  20. array_push($group, $val);
  21. }
  22. if ($i >= count($data)) {
  23. array_push($all, $group);
  24. } else {
  25. foreach ($data[$i] as $v) {
  26. combos($data, $all, $group, $v, $i + 1);
  27. }
  28. }
  29. return $all;
  30. }
  31.  
  32. $data = [];
  33. foreach ($arr as $a) {
  34. $data[] = array_keys($a);
  35. }
  36.  
  37. $combos = combos($data);
  38.  
  39. foreach ($combos as $combo) {
  40. echo implode(' ', $combo) . PHP_EOL;
  41. }
Success #stdin #stdout 0s 82560KB
stdin
Standard input is empty
stdout
meuble dessert rouge
meuble dessert vert
meuble desserte rouge
meuble desserte vert
meuble desert rouge
meuble desert vert