PHP在不覆盖数据的情况下合并数组
我有许多数组,我希望在不覆盖或丢失任何数据的情况下合并它们。我相信它们被称为关联数组,但我对术语没有100%的把握 数组包含如下信息:PHP在不覆盖数据的情况下合并数组,php,arrays,merge,Php,Arrays,Merge,我有许多数组,我希望在不覆盖或丢失任何数据的情况下合并它们。我相信它们被称为关联数组,但我对术语没有100%的把握 数组包含如下信息: $array1['title'] $array1['description'] $array2['title'] $array2['description'] $array2['random information'] 我希望合并$array1和$array2公共键中包含的信息,而不覆盖任何数据 这可能吗 我尝试过但没有成功的事情包括: (array)$ar
$array1['title']
$array1['description']
$array2['title']
$array2['description']
$array2['random information']
我希望合并$array1和$array2公共键中包含的信息,而不覆盖任何数据
这可能吗
我尝试过但没有成功的事情包括:
(array)$array3 = (array)$array1 + array($array2);
$array3 = array_push($array1,$array2);
$array3 = array_merge_recursive($array1,$array2);
基本上,我希望保留公共密钥,并将两个数组中的信息添加到新数组中。例如,我在新数组中只需要一个['title']['description']
等,但我需要新数组中两个数组的信息
所以$array3将包含$array1和$array2中的所有信息。。。['title']['description']
中的所有项目将保留在$array3中的['title']['description']
下
这可能吗
谢谢各位 我会合并所有键,然后合并数组,如下所示:
$merged = array();
foreach( array_merge( array_keys( $array1), array_keys( $array2)) as $key) {
$values = array();
if( array_key_exists( $key, $array1)) {
$values[] = $array1[$key];
}
if( array_key_exists( $key, $array2)) {
$values[] = $array2[$key];
}
$merged[$key] = $values;
}
从中可以看出,这将创建一个如下所示的数组:
Array
(
[title] => Array
(
[0] => title1
[1] => title2
)
[description] => Array
(
[0] => desc1
[1] => desc2
)
[random information] => Array
(
[0] => random2
)
)
我发现使用数组替换递归嵌套工作。第一次调用创建了一个合并的数组,该数组可能会删除一些值,第二次调用将重新合并回主数组,保留主数组中的所有数组键,但允许合并后的数组覆盖主数组中的值
$mergedArray = array_replace_recursive($array2, array_replace_recursive($array1, $array2));
查看这两个数组中的公共密钥会发生什么情况?@Schleis我想保留公共密钥,并将两个数组中的信息添加到新数组中。Thanks@Schleis我只希望在新数组中有一个
['title']['description']
等,但我希望在新数组中有两个数组的信息我相信OP正在查找数组('title'=>array(),'description'=>array())代码>我尝试过这个,它似乎不适当地合并了它们。。假设$array1['title']
包含'document1',document2'
和$array2['title']
包含'document3'和'document4'
…现在$array3['title']
现在包含以下列表:'document1'
然后'document3'
然后'document2'
然后'document4'
…我的数据比这要复杂得多,但这是我要尽可能简化的。。这是我所在地区的就寝时间,明天我将再次尝试!谢谢!:)