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,
),
)