2011-09-05 230 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 
    } 
}