目前,我正在检查阵列 $ A 的所有键是否在另一个阵列 $ B 的子集内
$B = array('a', 'b', 'c', 'd');
if(array_keys($A) == array_intersect(array_keys($A), $B))
{
action if true
}
我想知道是否有更直接的方式来执行此操作,例如in_array()
函数。
使用示例:
检查$ _POST数组以确保所有键与动态表单匹配,并在表单被黑客攻击时过滤掉额外的键。
答案 0 :(得分:2)
if (array_diff_key($A, array_flip($B))) {
// there are keys in $A that are *not* in $B!
}
或可能:
if (array_diff_key(array_flip($B), $A)) {
// not all of the keys in $B are in $A!
}
答案 1 :(得分:1)
也许不是那么直接阅读,但this comment的PHP手册中的array_intersect提供了一种检查数组是否是另一个数组的紧凑方式。
if (array_unique(array_keys($a) + $b) == $b)
{
echo 'valid array keys';
}
答案 2 :(得分:0)
不,你的方式可能和我用过的方式相同。如果需要与列表进行比较,则数组是最佳解决方案。虽然我可能会使用array_intersect_keys_
代替。