龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > php编程 >

数组组合算法

时间:2014-07-22 14:51来源: 作者: 点击:
分享到:
PHP 实现多个一维数组组合的算法,如果传递的参数不是数组,则会转换成数组。br /
PHP 实现多个一维数组组合的算法,如果传递的参数不是数组,则会转换成数组。

<?php
	function combination(){
		$array = array();
		$arguments = func_get_args();
		foreach($arguments as $argument){
			if(is_array($argument) === true){
				$array[] = $argument;
			}else{
				$array[] = array($argument);
			}
		}
		
		$size = count($array);
		
		if($size === 0){
			return array();
		}else if($size === 1){
			return is_array($array[0]) === true ? $array[0] : array();
		}else{
			$result = array();
			$a = $array[0];
			array_shift($array);
			if(is_array($array) === false){
				return $result;
			}
			
			foreach($a as $val){
				$b = call_user_func_array("combination", $array);
				foreach($b as $c){
					if(is_array($c) === true){
						$result[] = array_merge(array($val), $c);
					}else{
						$result[] = array($val, $c);
					}
				}
			}
			return $result;
		}
	}
	
	print_r(combination(array("A1", "A2"), array("B1", "B2"), "1", array("C1", "C2", "C3")));
?>  
精彩图集

赞助商链接