如何组合字符串$ a和$ b,以便$ a的第一个数字作为$ b的第二个字符,第二个数字作为$ b的第四个字符,第三个数字作为$ b的第7个字符,第四个数字作为第11个数字$ b的字符。
所以我们说$ a = 1234 和$ b = abcdefghijklmnop
我想得到这个:a1b2cd3efg4hijklmnop
是否需要将此功能组合起来+如果需要可以反向回来?
答案 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;
}