验证数组之间的键/值对


Verifying key/value pairs between arrays

我有一个"主"数组,还有几个数组需要根据主数组进行验证。

主数组是一个键/值对列表。其他数组必须由这些对中的一些(或全部)组成,不能有其他

这里有一些例子来说明:

$master = [1=>'foo', 2=>'bar', 3=>'baz'];
$good_child = [2=>'bar'];
$wrong_child_1 = [2=>'sparta'];
$wrong_child_2 = [42=>'bar'];

目前我正在用这段快速的代码进行验证:

foreach ($child as $key => $value) {
    if ($master[$key] !== $value) {
        // wrong child
    }
}

您可能已经注意到上面的$wrong_child_2(未定义索引)会失败,尽管这在实际应用程序中不是问题(至少现在不是)。

我的问题是,是否有更好的方法来进行这些验证?最好不要循环,而要使用数组函数。

看看array_diff_assoc

$bad = (bool)count(array_diff_assoc($test_array, $master_array))

也就是说,如果存在差异,$test_array不进行验证,包括索引检查。