基本上,我想构建一个函数,它将接受N参数(或可变长度数组,无论如何)并抽出一个像这样的字符串数组。
doTheThing("First", "Second", "Third");
array(
First_Second_Third
First_Second_0
First_0_Third
First_0_0
0_Second_Third
0_Second_0
0_0_Third
0_0_0
)
结果的顺序很重要。我想如果我有一个静态长度的数组,我知道如何做到这一点,但我无法在可以使用可变长度数组的地方工作。
答案 0 :(得分:0)
这是我想出的
function doTheThing(array $params){
$set_len = count($params);
$result = [];
$result_len = 1 << $set_len;
for ($c = 0; $c < $result_len; $c++){
$pattern = str_split(sprintf("%0{$set_len}s", decbin($c)), 1);
$result[] = implode('_', array_map(
function($input, $flag){ return $flag ? 0 : $input;},
$params, $pattern
));
}
return $result;
}
var_dump(doTheThing(['one', 'two', 'three', 'four', 'five']));