public static function getPermutation(array $orignal = []){// 排除非数组的参数if (! is_array($orignal)) {return [];}// 排除空数组if (empty($orignal)) {return [];}// 排除只有一个元素的数组if (count($orignal) < 2) {// 返回的目标数组$targetTmp = array_shift($orignal);// 返回结果集// 返回结果集return array_map(function ($v) {return [$v];}, $targetTmp);}// 构建目标数组$target = array_shift($orignal);// 目标数组第一个元素格式化为数组$target = is_array($target) ? $target : [];// 下一个需要处理的数组$tmp = array_shift($orignal);// 非正常数据标识//$invalideParam = false;// 数组且不为空while (is_array($tmp) && ! empty($tmp)) {// // 验证参数是否是一维数组// if (count($tmp) != count($tmp, COUNT_RECURSIVE)) {// $invalideParam = true;// break;// }/*** 原始数组的循环* array(* 0 =>1,* 1 =>2,* 2 =>3,* );.*/// 目标数组的临时变量$targetTmp = [];foreach ($target as $value) {foreach ($tmp as $v) {// 临时数组变量$targetTmp[] = array_merge([$value], [$v]);}}// 原始数组的替换$target = $targetTmp;// 移动数组的下一个元素$tmp = array_shift($orignal);}// // 存在非一维数组项// if ($invalideParam) {// return [];// }// 返回结果集return is_array($target) ? $target : [];}
本文档使用 521Wiki 发布