2017-01-09 2 views
0

Как объединить строки $ a и $ b так, чтобы 1-я цифра $ a помещалась как 2-й символ $ b, 2-я цифра как 4-й символ $ b, 3-я цифра как 7-й символ $ b и 4-я цифра как 11-й символ $ b.Объединение двух строк в определенном порядке

Так что давайте скажем, $ а = 1234 и $ Ь = ABCDEFGHIJKLMNOP

Я хочу, чтобы получить это: a1b2cd3efg4hijklmnop

Есть ли функция, чтобы объединить его, как это + реверс назад, если это необходимо?

+6

Нет - вы должны писать функции, чтобы сделать это. –

+0

Почему _would_ есть встроенная функция для этого? Это кажется очень конкретным. Для чего вы это используете? Просто любопытно. –

+0

Вы хотите продолжить форматирование слияния или его исправления, что у вас будет только длина 4 первой строки? Yo может выполнять итерацию по первой строке и использовать метод substr_replace() для замены во вторую строку с использованием положения символа. Вам нужно заменить логическим символом плюс цифру первой строки. – webDev

ответ

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. 

} 
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; 
} 
Смежные вопросы