我知道有很多這些,但我正在尋找稍有不同的東西。比較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
}
}