<?php
/**
* 获取多个数组的组合
* @list 二维数组$list [] = array (1,2,3);
* return array
*/
class arrayCombination{
private $Combination;
public function __construct($list = array()){
$list = array_values($list);
$this->GetForeach($list);
}
/**
* 拦截器
* @param $name 成员属性名称
* @return 成员属性
*/
public function __get($name){
if(!empty($this->$name)){
return $this->$name;
}
}
/**
* 调用getSulie完成组合
* @param type $list
*/
private function GetForeach($list){
foreach($list[0] as $v){
$this->getSulie($list,$v,1);
}
}
/**
* 实现组合
* @param type $list
* @param type $content
* @param type $deep
* @return type
*/
private function getSulie($list,$content,$deep){
$i=0;
if($deep>count($list)){
return;
}
foreach($list as $k=>$v){
if($i==$deep){
foreach($list[$k] as $vv){
$vv = $content.$vv;
if($deep==count($list)-1){
$this->Combination[] = $vv;
}else {
$this->getSulie($list,$vv,$deep+1);
}
}
break;
}
$i++;
}
return $Combination;
}
}
/**
* 使用例子
* $list [] = array (1,2,3);
* $list [] = array (1,2);
* $list [] = array (1,2,3,4);
* $list [] = array ('a','b');
* $list [] = array ('A','B');
* $s = new arrayCombination($list);
* print_r($s->Combination);
*/
/**
* 获取多个数组的组合
* @list 二维数组$list [] = array (1,2,3);
* return array
*/
class arrayCombination{
private $Combination;
public function __construct($list = array()){
$list = array_values($list);
$this->GetForeach($list);
}
/**
* 拦截器
* @param $name 成员属性名称
* @return 成员属性
*/
public function __get($name){
if(!empty($this->$name)){
return $this->$name;
}
}
/**
* 调用getSulie完成组合
* @param type $list
*/
private function GetForeach($list){
foreach($list[0] as $v){
$this->getSulie($list,$v,1);
}
}
/**
* 实现组合
* @param type $list
* @param type $content
* @param type $deep
* @return type
*/
private function getSulie($list,$content,$deep){
$i=0;
if($deep>count($list)){
return;
}
foreach($list as $k=>$v){
if($i==$deep){
foreach($list[$k] as $vv){
$vv = $content.$vv;
if($deep==count($list)-1){
$this->Combination[] = $vv;
}else {
$this->getSulie($list,$vv,$deep+1);
}
}
break;
}
$i++;
}
return $Combination;
}
}
/**
* 使用例子
* $list [] = array (1,2,3);
* $list [] = array (1,2);
* $list [] = array (1,2,3,4);
* $list [] = array ('a','b');
* $list [] = array ('A','B');
* $s = new arrayCombination($list);
* print_r($s->Combination);
*/
?>
文章来源,北京羲和时代www.ixiera.com