我尝试使用" array_merge($ a,$ b)"但这对我正在做的事情不起作用。这是两个数组:
$a =
Array
(
[Mike] => Array
(
[100] => Array
(
[quantity] => 1
[attribute] => 1
)
[200] => Array
(
[quantity] => 1
[attribute] => 1
)
[300] => Array
(
[quantity] => 1
[attribute] => 1
)
[400] => Array
(
[quantity] => 1
[attribute] => 1
)
)
)
$b =
Array
(
[Mike] => Array
(
[500] => Array
(
[quantity] => 1
[attribute] => 1
)
[600] => Array
(
[quantity] => 1
[attribute] => 1
)
)
)
这个概念是用户" Mike"将项目添加到其列表中(100,200,300,400)。此列表保存在数据库中。 Mike几天后作为匿名访客退出并开始新的列表,添加了他的会话中保存的项目(500,600)。当他完成并重新登录后,我想合并两个列表并保存更新的列表。如果我使用" array_merge"由于数组键是[Mike],因此它设计完全用$ b替换$ a而不是将项目号合并在一起。
我该如何结合这个?此外,如果两个列表中的两个项目相同,例如一个列表中的(100,200,300,400)和第二个列表中的(100,500)(项目编号" 100"此处是重复项目)。我想要" 100"的[数量]和[属性]字段。在第二个列表中覆盖项目" 100"的那些字段在第一个列表中。
由于 亲切的问候
答案 0 :(得分:1)
使用array_replace_recursive
函数(“更新重复项”):
$result = array_replace_recursive($a, $b);
print_r($result);
输出:
Array
(
[Mike] => Array
(
[100] => Array
(
[quantity] => 1
[attribute] => 1
)
[200] => Array
(
[quantity] => 1
[attribute] => 1
)
[300] => Array
(
[quantity] => 1
[attribute] => 1
)
[400] => Array
(
[quantity] => 1
[attribute] => 1
)
[500] => Array
(
[quantity] => 1
[attribute] => 1
)
[600] => Array
(
[quantity] => 1
[attribute] => 1
)
)
)
http://php.net/manual/en/function.array-replace-recursive.php
答案 1 :(得分:0)
您可以使用以下代码。一定要先把你最新的结果。它会给你你想要的结果。
$c = $b['Mike']+$a['Mike'];
感谢