<?php function getSequenceAry($arr) { if (count($arr) == 1) { return array($arr); } $arrRet = array(); foreach ($arr as $k => $v) { $arr2 = $arr; unset($arr2[$k]); $arrOrderList = getSequenceAry($arr2); foreach ($arrOrderList as $order) { array_unshift($order, $v); $arrRet[] = $order; } } return $arrRet; } function getSequenceStr($arr) { if (count($arr) == 1) { return $arr; } $arrRet = array(); foreach ($arr as $k => $v) { $arr2 = $arr; unset($arr2[$k]); $arrOrderList = getSequenceStr($arr2); foreach ($arrOrderList as $order) { $arrRet[] = $v . $order; } } return $arrRet; } print_r(getSequenceAry(array(1,2,3))); print_r(getSequenceStr(array(1,2,3)));