迭代用n-array替换字符串,同时保持顺序

时间:2017-01-07 16:41:08

标签: php

基本上,我想构建一个函数,它将接受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
)

结果的顺序很重要。我想如果我有一个静态长度的数组,我知道如何做到这一点,但我无法在可以使用可变长度数组的地方工作。

1 个答案:

答案 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']));