fork download
  1. <?php
  2. function custombuttons_generate_children(&$options, $a, $m, $k) {
  3. $mcount = count($m);
  4. if (empty($options[$a[$k]])) {
  5. foreach ($m as $key => $label) {
  6. $new_key = implode('_', array($k, $key));
  7. $new_label = implode('+', array($label, $a[$k]));
  8. $options[$a[$k]][$new_key] = $new_label;
  9. }
  10. }
  11. else {
  12. foreach ($options[$a[$k]] as $key => $label) {
  13. foreach ($m as $mkey => $mlabel) {
  14. if (!strpos($key, '_' . $mkey)) {
  15. $new_key = implode('_', array($key, $mkey));
  16. $new_label = implode('+', array($mlabel, $label));
  17. $options[$a[$k]][$new_key] = $new_label;
  18. }
  19. }
  20. }
  21. }
  22. $last = end(array_keys($options[$a[$k]]));
  23. if (count(explode('_', $last)) !== $mcount) {
  24. custombuttons_generate_children($options, $a, $m, $k);
  25. }
  26. }
  27.  
  28. function custombuttons_action_options_list() {
  29. $a = array(
  30. 'left' => 'LEFT',
  31. 'middle' => 'MIDDLE',
  32. 'right' => 'RIGHT',
  33. );
  34. $m = array( // modifiers
  35. 'ctrl' => 'CTRL',
  36. 'alt' => 'ALT',
  37. 'shift' => 'SHIFT',
  38. 'double' => 'DOUBLE',
  39. );
  40. foreach ($a as $key => $label) {
  41. $options[$key] = $label;
  42. $options[$label] = array();
  43. custombuttons_generate_children($options, $a, $m, $key);
  44. }
  45. print_r($options);
  46. }
  47. custombuttons_action_options_list();
  48. ?>
Success #stdin #stdout 0.03s 13112KB
stdin
Standard input is empty
stdout
Array
(
    [left] => LEFT
    [LEFT] => Array
        (
            [left_ctrl] => CTRL+LEFT
            [left_alt] => ALT+LEFT
            [left_shift] => SHIFT+LEFT
            [left_double] => DOUBLE+LEFT
            [left_ctrl_alt] => ALT+CTRL+LEFT
            [left_ctrl_shift] => SHIFT+CTRL+LEFT
            [left_ctrl_double] => DOUBLE+CTRL+LEFT
            [left_alt_ctrl] => CTRL+ALT+LEFT
            [left_alt_shift] => SHIFT+ALT+LEFT
            [left_alt_double] => DOUBLE+ALT+LEFT
            [left_shift_ctrl] => CTRL+SHIFT+LEFT
            [left_shift_alt] => ALT+SHIFT+LEFT
            [left_shift_double] => DOUBLE+SHIFT+LEFT
            [left_double_ctrl] => CTRL+DOUBLE+LEFT
            [left_double_alt] => ALT+DOUBLE+LEFT
            [left_double_shift] => SHIFT+DOUBLE+LEFT
            [left_ctrl_alt_shift] => SHIFT+ALT+CTRL+LEFT
            [left_ctrl_alt_double] => DOUBLE+ALT+CTRL+LEFT
            [left_ctrl_shift_alt] => ALT+SHIFT+CTRL+LEFT
            [left_ctrl_shift_double] => DOUBLE+SHIFT+CTRL+LEFT
            [left_ctrl_double_alt] => ALT+DOUBLE+CTRL+LEFT
            [left_ctrl_double_shift] => SHIFT+DOUBLE+CTRL+LEFT
            [left_alt_ctrl_shift] => SHIFT+CTRL+ALT+LEFT
            [left_alt_ctrl_double] => DOUBLE+CTRL+ALT+LEFT
            [left_alt_shift_ctrl] => CTRL+SHIFT+ALT+LEFT
            [left_alt_shift_double] => DOUBLE+SHIFT+ALT+LEFT
            [left_alt_double_ctrl] => CTRL+DOUBLE+ALT+LEFT
            [left_alt_double_shift] => SHIFT+DOUBLE+ALT+LEFT
            [left_shift_ctrl_alt] => ALT+CTRL+SHIFT+LEFT
            [left_shift_ctrl_double] => DOUBLE+CTRL+SHIFT+LEFT
            [left_shift_alt_ctrl] => CTRL+ALT+SHIFT+LEFT
            [left_shift_alt_double] => DOUBLE+ALT+SHIFT+LEFT
            [left_shift_double_ctrl] => CTRL+DOUBLE+SHIFT+LEFT
            [left_shift_double_alt] => ALT+DOUBLE+SHIFT+LEFT
            [left_double_ctrl_alt] => ALT+CTRL+DOUBLE+LEFT
            [left_double_ctrl_shift] => SHIFT+CTRL+DOUBLE+LEFT
            [left_double_alt_ctrl] => CTRL+ALT+DOUBLE+LEFT
            [left_double_alt_shift] => SHIFT+ALT+DOUBLE+LEFT
            [left_double_shift_ctrl] => CTRL+SHIFT+DOUBLE+LEFT
            [left_double_shift_alt] => ALT+SHIFT+DOUBLE+LEFT
        )

    [middle] => MIDDLE
    [MIDDLE] => Array
        (
            [middle_ctrl] => CTRL+MIDDLE
            [middle_alt] => ALT+MIDDLE
            [middle_shift] => SHIFT+MIDDLE
            [middle_double] => DOUBLE+MIDDLE
            [middle_ctrl_alt] => ALT+CTRL+MIDDLE
            [middle_ctrl_shift] => SHIFT+CTRL+MIDDLE
            [middle_ctrl_double] => DOUBLE+CTRL+MIDDLE
            [middle_alt_ctrl] => CTRL+ALT+MIDDLE
            [middle_alt_shift] => SHIFT+ALT+MIDDLE
            [middle_alt_double] => DOUBLE+ALT+MIDDLE
            [middle_shift_ctrl] => CTRL+SHIFT+MIDDLE
            [middle_shift_alt] => ALT+SHIFT+MIDDLE
            [middle_shift_double] => DOUBLE+SHIFT+MIDDLE
            [middle_double_ctrl] => CTRL+DOUBLE+MIDDLE
            [middle_double_alt] => ALT+DOUBLE+MIDDLE
            [middle_double_shift] => SHIFT+DOUBLE+MIDDLE
            [middle_ctrl_alt_shift] => SHIFT+ALT+CTRL+MIDDLE
            [middle_ctrl_alt_double] => DOUBLE+ALT+CTRL+MIDDLE
            [middle_ctrl_shift_alt] => ALT+SHIFT+CTRL+MIDDLE
            [middle_ctrl_shift_double] => DOUBLE+SHIFT+CTRL+MIDDLE
            [middle_ctrl_double_alt] => ALT+DOUBLE+CTRL+MIDDLE
            [middle_ctrl_double_shift] => SHIFT+DOUBLE+CTRL+MIDDLE
            [middle_alt_ctrl_shift] => SHIFT+CTRL+ALT+MIDDLE
            [middle_alt_ctrl_double] => DOUBLE+CTRL+ALT+MIDDLE
            [middle_alt_shift_ctrl] => CTRL+SHIFT+ALT+MIDDLE
            [middle_alt_shift_double] => DOUBLE+SHIFT+ALT+MIDDLE
            [middle_alt_double_ctrl] => CTRL+DOUBLE+ALT+MIDDLE
            [middle_alt_double_shift] => SHIFT+DOUBLE+ALT+MIDDLE
            [middle_shift_ctrl_alt] => ALT+CTRL+SHIFT+MIDDLE
            [middle_shift_ctrl_double] => DOUBLE+CTRL+SHIFT+MIDDLE
            [middle_shift_alt_ctrl] => CTRL+ALT+SHIFT+MIDDLE
            [middle_shift_alt_double] => DOUBLE+ALT+SHIFT+MIDDLE
            [middle_shift_double_ctrl] => CTRL+DOUBLE+SHIFT+MIDDLE
            [middle_shift_double_alt] => ALT+DOUBLE+SHIFT+MIDDLE
            [middle_double_ctrl_alt] => ALT+CTRL+DOUBLE+MIDDLE
            [middle_double_ctrl_shift] => SHIFT+CTRL+DOUBLE+MIDDLE
            [middle_double_alt_ctrl] => CTRL+ALT+DOUBLE+MIDDLE
            [middle_double_alt_shift] => SHIFT+ALT+DOUBLE+MIDDLE
            [middle_double_shift_ctrl] => CTRL+SHIFT+DOUBLE+MIDDLE
            [middle_double_shift_alt] => ALT+SHIFT+DOUBLE+MIDDLE
        )

    [right] => RIGHT
    [RIGHT] => Array
        (
            [right_ctrl] => CTRL+RIGHT
            [right_alt] => ALT+RIGHT
            [right_shift] => SHIFT+RIGHT
            [right_double] => DOUBLE+RIGHT
            [right_ctrl_alt] => ALT+CTRL+RIGHT
            [right_ctrl_shift] => SHIFT+CTRL+RIGHT
            [right_ctrl_double] => DOUBLE+CTRL+RIGHT
            [right_alt_ctrl] => CTRL+ALT+RIGHT
            [right_alt_shift] => SHIFT+ALT+RIGHT
            [right_alt_double] => DOUBLE+ALT+RIGHT
            [right_shift_ctrl] => CTRL+SHIFT+RIGHT
            [right_shift_alt] => ALT+SHIFT+RIGHT
            [right_shift_double] => DOUBLE+SHIFT+RIGHT
            [right_double_ctrl] => CTRL+DOUBLE+RIGHT
            [right_double_alt] => ALT+DOUBLE+RIGHT
            [right_double_shift] => SHIFT+DOUBLE+RIGHT
            [right_ctrl_alt_shift] => SHIFT+ALT+CTRL+RIGHT
            [right_ctrl_alt_double] => DOUBLE+ALT+CTRL+RIGHT
            [right_ctrl_shift_alt] => ALT+SHIFT+CTRL+RIGHT
            [right_ctrl_shift_double] => DOUBLE+SHIFT+CTRL+RIGHT
            [right_ctrl_double_alt] => ALT+DOUBLE+CTRL+RIGHT
            [right_ctrl_double_shift] => SHIFT+DOUBLE+CTRL+RIGHT
            [right_alt_ctrl_shift] => SHIFT+CTRL+ALT+RIGHT
            [right_alt_ctrl_double] => DOUBLE+CTRL+ALT+RIGHT
            [right_alt_shift_ctrl] => CTRL+SHIFT+ALT+RIGHT
            [right_alt_shift_double] => DOUBLE+SHIFT+ALT+RIGHT
            [right_alt_double_ctrl] => CTRL+DOUBLE+ALT+RIGHT
            [right_alt_double_shift] => SHIFT+DOUBLE+ALT+RIGHT
            [right_shift_ctrl_alt] => ALT+CTRL+SHIFT+RIGHT
            [right_shift_ctrl_double] => DOUBLE+CTRL+SHIFT+RIGHT
            [right_shift_alt_ctrl] => CTRL+ALT+SHIFT+RIGHT
            [right_shift_alt_double] => DOUBLE+ALT+SHIFT+RIGHT
            [right_shift_double_ctrl] => CTRL+DOUBLE+SHIFT+RIGHT
            [right_shift_double_alt] => ALT+DOUBLE+SHIFT+RIGHT
            [right_double_ctrl_alt] => ALT+CTRL+DOUBLE+RIGHT
            [right_double_ctrl_shift] => SHIFT+CTRL+DOUBLE+RIGHT
            [right_double_alt_ctrl] => CTRL+ALT+DOUBLE+RIGHT
            [right_double_alt_shift] => SHIFT+ALT+DOUBLE+RIGHT
            [right_double_shift_ctrl] => CTRL+SHIFT+DOUBLE+RIGHT
            [right_double_shift_alt] => ALT+SHIFT+DOUBLE+RIGHT
        )

)