按特定顺序组合两个字符串

时间:2017-01-09 22:21:27

标签: php

如何组合字符串$ a和$ b,以便$ a的第一个数字作为$ b的第二个字符,第二个数字作为$ b的第四个字符,第三个数字作为$ b的第7个字符,第四个数字作为第11个数字$ b的字符。

所以我们说$ a = 1234 和$ b = abcdefghijklmnop

我想得到这个:a1b2cd3efg4hijklmnop

是否需要将此功能组合起来+如果需要可以反向回来?

2 个答案:

答案 0 :(得分:0)

您可以使用多个数组并使用array_splice()在某个点插入值。

$logicArr = [1,3,6,10]; //Logic Array = Each position of array
$arrOne = [1,2,3,4]; //Values to add to the array
$arrTwo = ['a','b','c','d','e','f','g', 'h','i','j','k','l','m','n','o','p']; //Data Array

foreach ($arrOne as $k=>$v) {

    array_splice($arrTwo, $logicArr[$k], 0, $v); //Insert value from $arrOne at position $logicArr[$k] using iteration of Foreach loop.

}

答案 1 :(得分:0)

您可以遍历$b中的每个字符,只有在到达所需位置时才会插入$a中的下一个字符:

function mix($a, $b)
{
    $a = str_split($a);
    $b = str_split($b);
    $mixed = '';

    $nextInsertPos = 1; // 2nd character
    $indexA = 0;

    foreach ($b as $indexB => $charB) {
        if ($indexB + $indexA == $nextInsertPos) {
            $mixed .= $a[$indexA++];
            $nextInsertPos = $nextInsertPos + ($indexA + 1);
        }
        $mixed .= $charB;
    }

    return $mixed;
}
相关问题