在 PHP 中,判斷多個元素是否在陣列中非常常見,本篇文章將介紹如何實現這項功能。
方法一:使用in_array 函數
in_array 函數可判斷一個元素是否在陣列中,它的語法如下:
bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )
可以看出,函數有三個參數,其中第一個參數表示目標元素,第二個參數表示在哪個數組中查找,第三個參數表示是否啟用嚴格模式。預設情況下,不啟用嚴格模式。
因此,我們可以利用 in_array 函數,透過迴圈判斷多個元素是否在陣列中。範例程式碼如下:
<?php $needleArr = ['element1', 'element2', 'element3']; $haystackArr = ['element1', 'element3', 'element4', 'element5']; foreach ($needleArr as $needle) { if (in_array($needle, $haystackArr)) { echo "$needle is in haystack array "; } else { echo "$needle is NOT in haystack array "; } }
輸出結果為:
element1 is in haystack array element2 is NOT in haystack array element3 is in haystack array
上述程式碼中,我們先定義了一個目標陣列$needleArr
和一個待搜尋的陣列 $haystackArr
,然後透過foreach
循環依序判斷$needleArr
中的每個元素是否在$haystackArr
中存在,最終輸出判斷結果。
要注意的是,in_array 函數預設不會啟用嚴格模式,即將元素轉換為字串來進行比較。如果需要啟用嚴格模式,可將第三個參數設為true,如下所示:
in_array($needle, $haystackArr, true);
方法二:使用array_intersect 函數
array_intersect 函數可比較多個數組,找出它們共同的元素,具體語法如下:
array array_intersect ( array $array1 , array $array2 [, array $... ] )
該函數可比較多個數組,其中第一個參數表示第一個數組,第二個參數表示第二個數組,依次類推。
因此,我們也可以利用 array_intersect 函數,將多個數組傳入其中,找出它們的交集,如果交集不為空,則表示數組中存在指定元素。範例程式碼如下:
<?php $needleArr = ['element1', 'element2', 'element3']; $haystackArr = ['element1', 'element3', 'element4', 'element5']; $intersectArr = array_intersect($needleArr, $haystackArr); if (!empty($intersectArr)) { echo "There are some elements in the haystack array "; } else { echo "No elements in the haystack array "; }
輸出結果為:
There are some elements in the haystack array
上述程式碼中,我們先定義了一個目標陣列$needleArr
和一個待搜尋的陣列 $haystackArr
,然後將它們傳入array_intersect 函數中,如果傳回的交集不為空,則表示數組中存在指定元素。
要注意的是,array_intersect 函數會保留原始陣列中的鍵,因此它傳回的陣列不一定是連續的,這取決於原始陣列的鍵是否連續。如果需要保留鍵值關係,可使用 array_intersect_assoc 函數。
方法三:使用array_diff 函數
array_diff 函數可比較多個數組,找出它們的差集,具體語法如下:
array array_diff ( array $array1 , array $array2 [, array $... ] )
此函數可比較多個數組,其中第一個參數表示第一個數組,第二個參數表示第二個數組,依次類推。
因此,我們也可以利用 array_diff 函數,將多個數組傳入其中,找出它們的差集,如果差集等於原始數組,則表示數組中存在指定元素。範例程式碼如下:
<?php $needleArr = ['element1', 'element2', 'element3']; $haystackArr = ['element1', 'element3', 'element4', 'element5']; $diffArr = array_diff($needleArr, $haystackArr); if ($diffArr !== $needleArr) { echo "There are some elements in the haystack array "; } else { echo "No elements in the haystack array "; }
輸出結果為:
There are some elements in the haystack array
上述程式碼中,我們先定義了一個目標陣列$needleArr
和一個待搜尋的陣列 $haystackArr
,然後將它們傳入array_diff 函數中,如果傳回的差集不等於原始數組,則表示數組中存在指定元素。
要注意的是,array_diff 函數會傳回第一個陣列中存在,但其他陣列中不存在的元素陣列。所以,如果第一個陣列本身就不包含目標元素,則上述方法無效。
以上是判斷多個元素是否在陣列中 php的詳細內容。更多資訊請關注PHP中文網其他相關文章!