<?php $arr = array('a', 'b', 'c', 'd', 'e', 'f'); combine_array($arr); function combine_array($arr, $index=0) { static $num = 0; $arr_len = count($arr); if($arr_len == $index) { ++$num; echo $num.' '. join(",", $arr) . '<br/>'; } else { for($i=$index; $i<$arr_len; $i++) { list($arr[$index], $arr[$i]) = array($arr[$i], $arr[$index]); combine_array($arr, $index+1); list($arr[$index], $arr[$i]) = array($arr[$i], $arr[$index]); } } }