首頁 >後端開發 >PHP問題 >判斷多個元素是否在陣列中 php

判斷多個元素是否在陣列中 php

WBOY
WBOY原創
2023-05-11 10:23:06779瀏覽

在 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn