按键条件创建新数组,并按另一个数组值填充



我正试图通过检查索引号来创建新的数组,并用另一个数组填充该索引。

如果当前元素索引在索引4 中,则在循环中

它将从另一个数组中获取值。

并且该位置上的值将移动到下一个循环。

我现在的两个阵列像这个

$arr1 = array(
0 => 'number 1', 
1 => 'number 2',
2 => 'number 3',
3 => 'number 4',
4 => 'number 5',
) ;

$arr2 = array(
0 => 'number 4 insert', 
1 => 'number 8 insert',
2 => 'number 12 insert',
3 => 'number 16 insert',
4 => 'number 24 insert',
) ;

我期望的新阵列,我想要这个

Array
(
[0] => 'number 1',
[1] => 'number 2',
[2] => 'number 3',
[3] => 'number 4 insert',
[4] => 'number 4',
[5] => 'number 5',
[6] => 'number 6',
[7] => 'number 8 insert',
[8] => 'number 7',
[9] => 'number 8',
[10] => 'number 9',
[11] => 'number 12 insert',
[12] => 'number 10',
...
...
)

对于这个解决方案,我正在尝试这样做,但它通常会替换我的主数组值,而不是在我想要的选定键索引上推送值。

$arr1 = array(
0 => 'number 1', 
1 => 'number 2',
2 => 'number 3',
3 => 'number 4',
4 => 'number 5',
) ;

$arr2 = array(
0 => 'number 4 insert', 
1 => 'number 8 insert',
2 => 'number 12 insert',
3 => 'number 16 insert',
4 => 'number 24 insert',
) ;

function match_arrayKeys ($x, $y,$z)
{
$keys    = array_keys ($x);

$keysy    = array_keys ($y);
for ($i = 0; $i < count ($keys); $i++)
{
$j = $i+1;
if($j%$z== 0 ){
$newarray [$i] = $y[$i-1];
} else {
$newarray [$i] = $x[$i];
}

}
return $newarray;
}
print_r (match_arrayKeys ($arr1,$arr2, 4));

FIDDLE

您可以尝试以下操作:

function match_arrayKeys($arr1, $arr2, $gap)
{
$index = $gap - 1;
while ($element = array_shift($arr2)) {
array_splice($arr1, $index, 0, $element);
$index += $gap;
if ($index > count($arr1)) break;
}
return $arr1;
}
print_r(match_arrayKeys($arr1, $arr2, 4));

相关内容

最新更新