Есть ли способ объединить эти массивы:
// 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
, но они объединяют все ключи вместо новых, поэтому они переопределяют пользовательские настройки.
Конечно, исходный массив намного сложнее и содержит много многомерных массивов внутри.
Есть ли способ сделать это проще, или библиотека справится с этим?