验证阵列中的所有密钥

时间:2011-10-16 11:13:29

标签: php

目前,我正在检查阵列 $ A 的所有键是否在另一个阵列 $ B 的子集

$B = array('a', 'b', 'c', 'd');

if(array_keys($A) == array_intersect(array_keys($A), $B))
{
 action if true
}

我想知道是否有更直接的方式来执行此操作,例如in_array()函数。

使用示例

检查$ _POST数组以确保所有键与动态表单匹配,并在表单被黑客攻击时过滤掉额外的键。

3 个答案:

答案 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';
}

Test example

答案 2 :(得分:0)

不,你的方式可能和我用过的方式相同。如果需要与列表进行比较,则数组是最佳解决方案。虽然我可能会使用array_intersect_keys_代替。