Php 数组合并和重写

Php 数组合并和重写,php,arrays,Php,Arrays,我想知道是否可以合并两个数组,然后重写原始数组的属性 $originalArray = [1,2,3]; $newArray = [ 'first' => array_merge($originalArray, [4,5]), 'second' => array_merge($originalArray, [6,7]), ]; 所以我想实现的是,$originalArray将是[1,2,3],然后$newArray['first']将是[1,2

我想知道是否可以合并两个数组,然后重写原始数组的属性

$originalArray = [1,2,3];
$newArray = [
         'first'  => array_merge($originalArray, [4,5]),
         'second' => array_merge($originalArray, [6,7]),
];
所以我想实现的是,
$originalArray
将是
[1,2,3]
,然后
$newArray['first']
将是
[1,2,3,4,5]
然后
$newArray['second']
将是
[1,2,3,4,5,6,7]

现在,我拥有的是
$originalArray
[1,2,3]
,然后
$newArray['first']
[1,2,3,4,5]
然后
$newArray['second']
[1,2,3,6,7]
这很有道理,因为
$originalArray
正在
第一个
第二个
实例上合并,但是
$originalArray
没有被覆盖


我想知道这是否可能?我们能否在
$newArray
中临时覆盖
$originalArray
的值?

使用其他变量来保存累积合并

$originalArray = [1,2,3];

$newArray = [
    'first' => ($tempArray = array_merge($originalArray, [4,5])),
    'second' => ($tempArray = array_merge($tempArray, [6,7])),
    'third' => ($tempArray = array_merge($tempArray, [8,9])),
    ...
];
下面将有所帮助

$originalArray = [1,2,3];


$firstArr = ['first'=> array_merge($originalArray, [4,5])];
$secArr = ['second'=> array_merge($firstArr['first'], [6,7])];
print_r($secArr);
//OR
$newArray = [
         'first'  => array_merge($originalArray, [4,5]),
         'second' => array_merge(array_merge($originalArray,[4,5]), [6,7]),
];
print_r($newArray['second']);

请尝试下面的代码。这对你有用

<?php
$originalArray = [1,2,3];

$newArray['first'] = array_merge($originalArray, [4,5]);
$newArray['second'] = array_merge($newArray['first'], [6,7]);
$newArray['third'] = array_merge($newArray['second'], [8,9]);

echo "<pre>";
print_r($newArray);
?>

以下是您想要做的:

Array ( 
[first] => Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 ) 
[second] => Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 6 [4] => 7 ) 
)
输出:

<?php

$orig  = [1,2,3];
$trans = [
         'first'  => [4,5],
         'second' => [6,7],
];

foreach($trans as &$v) {
    $orig = $v = array_merge($orig, $v);
}
unset($v);

var_export($trans);

使用循环进行合并,并使用上次合并更新原始数组

array (
  'first' => 
  array (
    0 => 1,
    1 => 2,
    2 => 3,
    3 => 4,
    4 => 5,
  ),
  'second' => 
  array (
    0 => 1,
    1 => 2,
    2 => 3,
    3 => 4,
    4 => 5,
    5 => 6,
    6 => 7,
  ),
)

为什么不先执行
array\u merge
,然后再将其分配到
$newArray
?@AnkitSingh上面的代码只是我正在处理的内容的摘录。因此,理想情况下,我不知道这是否可行,但我在想是否有可能在
$newArray
本身内实现。是否希望原始数组值与结尾处的newArray值相同?请查看我的答案谢谢您的回复。我想知道是否可以从数组本身重写该值,为什么这很重要?结果不是最重要的吗?是的,但是我的代码逻辑非常复杂,我必须创建多个中间变量,我想避免这些。我已经更新了答案,以说明如何将变量赋值放入数组中。如果有很多,编写使用循环的函数可能会更容易。
<?php

$orig  = [1,2,3];
$trans = [
         'first'  => [4,5],
         'second' => [6,7],
];

foreach($trans as &$v) {
    $orig = $v = array_merge($orig, $v);
}
unset($v);

var_export($trans);
array (
  'first' => 
  array (
    0 => 1,
    1 => 2,
    2 => 3,
    3 => 4,
    4 => 5,
  ),
  'second' => 
  array (
    0 => 1,
    1 => 2,
    2 => 3,
    3 => 4,
    4 => 5,
    5 => 6,
    6 => 7,
  ),
)