gpt4 book ai didi

PHP:如何在不向数组添加新键的情况下用另一个数组的值覆盖一个数组中的值?

转载 作者:可可西里 更新时间:2023-10-31 22:09:00 26 4
gpt4 key购买 nike

我有一个带有默认设置的数组,一个带有用户指定设置的数组。我想合并这两个数组,以便默认设置被用户指定的设置覆盖。

我曾尝试使用 array_merge,它会按照我的意愿进行覆盖,但如果用户指定了默认设置中不存在的设置,它也会添加新设置。有没有比 array_merge 更好的函数?或者是否有一个函数可以用来过滤用户指定的数组,以便它只包含默认设置数组中也存在的键?

我想要的示例

$default = array('a' => 1, 'b' => 2);
$user = array('b' => 3, 'c' => 4);

// Somehow merge $user into $default so we end up with this:
Array
(
[a] => 1
[b] => 3
)

最佳答案

您实际上可以将两个数组相加 ($user+$default) 而不是使用 array_merge

如果您想停止默认设置中不存在的任何用户设置,您可以使用 array_intersect_key :

Returns an associative array containing all the entries of array1 which have keys that are present in all arguments

示例:

$default = array('a' => 1, 'b' => 2);
$user = array('b' => 3, 'c' => 4);

// add any settings from $default to $user, then select only the keys in both arrays
$settings = array_intersect_key($user + $default, $default);

print_r($settings);

结果:

Array
(
[b] => 3
[a] => 1
)

键/值(和顺序)首先从 $user 中选择,这就是为什么 ba 之前数组,$user中没有a$user 中未定义但 $default 中定义的任何键都将添加到 $user 的末尾>。然后删除 $user + $default 中未在 $default 中定义的任何键。

关于PHP:如何在不向数组添加新键的情况下用另一个数组的值覆盖一个数组中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2838079/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com