- A+
所属分类:建站
搜索功能中需要实现的一个算法
给一个 元素不会重复的数组,求出这个数组的所有组合 等于 !4
<?php
ini_set("max_execution_time",0);
class sort_arr{
public $return_arr = array();
//传递一个数组 返回新数组 依次组装名称
public function array_sort_calc($shengyu_arr,$now_arr=array()){
xdebug_var_dump($now_arr);
//当前元素 组合 当前取出的元素 剩余的元素组合
//每次走完的时候 记录 这个组合到 结果中
//第一次 取出第一个元素
//第二次 取出 剩余数组中的 第一个元素
$new_now_temp = $now_arr;
foreach ($shengyu_arr as $key=>$val){
array_push($now_arr,$val);
$new_shengyu_arr = $shengyu_arr;
unset($new_shengyu_arr[$key]);
if(count($new_shengyu_arr)<=0){
array_push($this->return_arr,$now_arr);
$now_arr = array();
}else{
$this->array_sort_calc($new_shengyu_arr,$now_arr);
}
$now_arr = $new_now_temp;//每次的循环结束都将是一个 结果,这里 防止出现 $now_arr 前边的循环所修改
}
}
}
$sort_arr = new sort_arr();
$shengyu_arr = array("a","b","c");
$sort_arr->array_sort_calc($shengyu_arr);
var_dump($sort_arr->return_arr);
/*
* abc a bc 原有 空 结果 a
* bc b c 原有 a 结果 ab
* c c 空 原有 ab 结果 abc 此时回到第二步 继续循环 此时 now_arr = ab
*
*
* b c
* c 此时 now_arr 是什么 是 ab 啦 所以需要 在第一次循环的时候 搞个临时变量 最后再还给 now_arr
*
*
* */
?>
- 我的微信
- 这是我的微信扫一扫
-
- 我的微信公众号
- 我的微信公众号扫一扫
-