PHP使用默认数组来保持实时数组的正确结构

Bra*_*ady 2 php arrays merge

我有一个数组,为我的插件保留一些默认设置.随着插件的发展,设置可能会被删除或从版本添加到版本.

这是一个示例默认数组:

$defaults = array(
                    'setting1' => 'somevalue',
                    'setting2' => 'somevalue',
                    'setting4' => 'somevalue',
                  );
Run Code Online (Sandbox Code Playgroud)

以下是实时设置数据的示例,需要为新的$ default结构更新结构:

$livesettings = array(
                        'setting1' => 'foo',
                        'setting2' => 'bar',
                        'setting3' => 'foobar',
                      );
Run Code Online (Sandbox Code Playgroud)

我正在寻找一个函数,我可以传递两个数组,并更新livesettings的结构以匹配$ defaults.

所以在这种情况下,在livesettings:

  1. 未触摸setting1和setting2.他们的价值观保持不变
  2. 不再需要删除setting3
  3. 使用默认值添加setting4 somevalue

他们在PHP中的任何功能可以一次完成吗?如果是的话是什么?如果没有,我将如何使用PHP代码实现这一目标?

Ikk*_*kke 8

您需要array_intersect_key()array_merge()的组合.

$livesettings = array_intersect_key($livesettings, $defaults);
$livesettings = array_merge($defaults, $livesettings);
Run Code Online (Sandbox Code Playgroud)

第一个函数将删除所有未找到的键$defaults,而第二个函数将添加$defaults未找到的项$livesettings