1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| <?php function combine_chars($items, $combines = array()) { static $set; if (empty($combines) === true) { $set = array(); } if (is_string($items) === true) { $items = str_split($items); } if (empty($items) === true) { array_push($set, join('', $combines)); } for ($t=count($items)-1, $i=$t; $i>=0; --$i) { $temp_items = $items; $temp_combines = $combines; array_unshift($temp_combines, array_splice($temp_items, $i, 1)[0]); combine_chars($temp_items, $temp_combines); } return $set; }
print_r(combine_chars(array('a', 'b', 'c'))); print_r(combine_chars('abc'));
|