我知道有很多这些,但我正在寻找稍有不同的东西。比较PHP阵列
直差异不适用于我。
我有允许标签的列表(阵列),即[“引擎”,“底盘”,“刹车”,“悬浮液”]
其中我想要查询与所述用户已经输入列表。 Diff不起作用,因为用户可能不会输入所有的选项,即[“引擎”],但我仍然希望它通过。如果他们在列表中加入“香蕉”之类的东西,我想要发生的就是失败。
我知道有很多这些,但我正在寻找稍有不同的东西。比较PHP阵列
直差异不适用于我。
我有允许标签的列表(阵列),即[“引擎”,“底盘”,“刹车”,“悬浮液”]
其中我想要查询与所述用户已经输入列表。 Diff不起作用,因为用户可能不会输入所有的选项,即[“引擎”],但我仍然希望它通过。如果他们在列表中加入“香蕉”之类的东西,我想要发生的就是失败。
使用和array_diff();
$allowed=array("engine","chassis","brakes","suspension");
$user=array("engine","brakes","banana");
$unallowed=array_diff($user, $allowed);
print_r($unallowed);
这将返回香蕉,因为它在$ user中,但不在$允许的范围内。
您可以使用array_intersect()
,并检查输入数组大小的结果数组的大小。如果结果较小,则输入包含一个或多个不在'允许'数组中的项目。如果它的大小相等,它的所有项都在用户的输入中,所以你可以使用数组做任何你想要的。
array_diff()
:http://nl.php.net/array_diff
返回包含所有从ARRAY1中不存在任何其它阵列的条目的阵列。
if (array_diff($input, $allowed)) {
// error
}
$allowed_tags = array("engine","chassis","brakes","suspension");
$user_iput = array("engine", "suspension", "banana");
foreach($user_input as $ui) {
if(!in_array($ui, $allowed_tags)) {
//user entered an invalid tag
}
}