我有一个"主"数组,还有几个数组需要根据主数组进行验证。
主数组是一个键/值对列表。其他数组必须由这些对中的一些(或全部)组成,不能有其他。
这里有一些例子来说明:
$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
不进行验证,包括索引检查。