PHP - 递归问题

时间:2011-09-20 23:06:25

标签: php algorithm recursion

  

可能重复:
  PHP 2D Array output all combinations

我需要测试具有大量可能输入的特定函数的行为。假设功能签名如下:

foo ($a)
foo ($a, $b, $c)

$a可以包含以下值:1,2。

$b可以包含以下值:'hello''world'

$c可以包含以下值:TRUEFALSE

如何编写返回以下组合的函数:

1
2
1,hello,TRUE
1,hello,FALSE
2,hello,TRUE
2,hello,FALSE
1,world,TRUE
1,world,FALSE
...

请注意,函数参数的数量是未知的,它们的可能值也是未知的。

1 个答案:

答案 0 :(得分:0)

这个问题似乎与递归没有任何关系。

根据您所编写的内容,您似乎希望使用可能的每个排列生成的参数列表来测试函数foo()? 以下代码将生成该列表。

//Generate the list
$arg_list = array();
foreach(array(1,2) as $a) //Build the foo($a) cases
   $arg_list[] = array($a); 
foreach(array(1,2) as $a) //Build the foo($a, $b, $c) cases
   foreach(array('hello','world') as $b)
       foreach(array(true,false) as $c)
           $arg_list[] = array($a,$b,$c);

//Test each possible case
foreach($arg_list as $args) {
   ...
   $result = call_user_func_array('foo', $args);
   ...
   //Is result what was expected? Check and aggregate
}

这是你想要的事吗?