2011-09-05 157 views
3

我知道有很多这些,但我正在寻找稍有不同的东西。比较PHP阵列

直差异不适用于我。

我有允许标签的列表(阵列),即[“引擎”,“底盘”,“刹车”,“悬浮液”]

其中我想要查询与所述用户已经输入列表。 Diff不起作用,因为用户可能不会输入所有的选项,即[“引擎”],但我仍然希望它通过。如果他们在列表中加入“香蕉”之类的东西,我想要发生的就是失败。

回答

1

使用和array_diff();

$allowed=array("engine","chassis","brakes","suspension"); 
$user=array("engine","brakes","banana"); 
$unallowed=array_diff($user, $allowed); 
print_r($unallowed); 

这将返回香蕉,因为它在$ user中,但不在$允许的范围内。

2

您可以使用array_intersect(),并检查输入数组大小的结果数组的大小。如果结果较小,则输入包含一个或多个不在'允许'数组中的项目。如果它的大小相等,它的所有项都在用户的输入中,所以你可以使用数组做任何你想要的。

0

array_diff()http://nl.php.net/array_diff

返回包含所有从ARRAY1中不存在任何其它阵列的条目的阵列。

if (array_diff($input, $allowed)) { 
    // error 
} 
0
$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 
    } 
}