比较PHP数组

3
我知道这样的内容有很多,但我正在寻找略微不同的东西。
直接的差异对我没用。
我有一个允许的标签列表(数组),例如["engine","chassis","brakes","suspension"],
我想要将其与用户输入的列表进行比较。差异无法工作,因为用户可能没有输入所有选项,例如["engine"],但我仍然希望它通过。我希望发生的是,如果他们在列表中输入了类似"banana"之类的东西,则失败。
4个回答

2
你可以使用 array_intersect() 函数,然后检查结果数组的大小与输入数组的大小是否相同。如果结果较小,则输入包含一个或多个不在“允许”数组中的项目。如果它的大小相等,则其中的所有项目都在用户的输入中,因此您可以使用该数组进行任何操作。

1

使用 array_diff();

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

这将返回香蕉,因为它在$user中,但不在$allowed中。


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
  }
}

0

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

返回一个数组,其中包含所有来自array1的条目,这些条目不存在于任何其他数组中。

if ( array_diff( $input, $allowed ) ) {
    // error
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接