【发布时间】:2018-05-08 17:07:57
【问题描述】:
有没有办法合并这些数组:
// saved settings by the user
$arr1 = [
'options' => [
'first' => 1,
'second' => 2,
'third' => 3,
]
];
// new option schema (new keys added)
$arr2 = [
'options' => [
'first' => 1,
'second' => 212,
'fourth' => 4
]
];
并得到如下输出:
$arr3 = [
'options' => [
'first' => 1, // nothing do to, "first" key already exists
'second' => 2, // nothing to do, "second" key exists (user already saved "second" with value 2, so we omit value 212)
// "third" option got removed from new schema, no longer needed in the app, so may be removed from User settings as well
'fourth' => 4 // this key is new, so let's add it to the final result
]
];
基本上我尝试了array_merge 或array_merge_recursive,但是它们合并了所有键而不是仅合并新键,因此它会覆盖用户设置。
当然,源数组要复杂得多,里面有很多多维数组。
有没有办法让它变得简单,或者图书馆可以处理它?
【问题讨论】:
-
你在
$arr3中想要的不是合并的概念,你需要通过循环或类似的结构手动实现 -
感谢 Abdo,我认为可能已经有现成的解决方案,如果没有,我会自己做
标签: php array-merge