作為開發者,我們經常需要處理和操作陣列。在 PHP 中,判斷陣列中是否存在某個值,是常出現的任務。
在 PHP 中,有多種方法可以檢查一個陣列中是否包含某個值。本文將介紹幾種常用的方法。
一、in_array() 函數
in_array() 是 PHP 內建函數之一,用來檢查一個值是否存在於陣列中。它的語法如下:
bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )
此函數有三個參數,分別是需要尋找的值(needle ),待查找的陣列(haystack),以及一個可選的bool 類型的參數strict。其中 needle 和 haystack 必須傳入,strict 的預設值是 false。
如果需要尋找的值 needle 在待尋找陣列 haystack 中,則傳回 true;否則,傳回 false。以下是一個範例:
$fruits = array("apple", "banana", "orange");
if (in_array("apple", $fruits)) {
echo "找到了 apple!";
}
在上面的範例中,$fruits 是一個包含了若干水果名稱的數組,in_array() 函數會檢查其中是否包含字串"apple"。因為陣列中確實包含了 "apple",所以輸出結果為 "找到了 apple!"。
二、array_search() 函數
array_search() 函數和 in_array() 類似,也是用來找出一個值是否在陣列中。不同的是,它會傳回查找到的鍵名(key),而不是傳回一個 bool 類型的結果。其語法如下:
mixed array_search ( mixed $needle , array $haystack [, bool $strict = false ] )
此函數有三個參數,其中needle 是要找的值,haystack是待查找的數組,strict 參數是是否開啟類型的嚴格比較。
如果需要尋找的值 needle 存在於待尋找陣列 haystack 中,則傳回該值所對應的鍵名;否則,傳回 false。以下是一個例子:
$casual_fruits = array("apple", "banana", "orange");
$key = array_search("banana", $casual_fruits);
if ( $key) {
echo "banana 在数组中的键名是 " . $key;
}
在上面的例子中,$casual_fruits 數組中包含了若干個異種水果名稱,array_search() 函數查找其中是否包含了"banana" 這個值,找到後返回"1",並透過echo 輸出"banana在數組中的鍵名是1"。
三、in_array() 和array_search() 函數的差異
雖然in_array() 和array_search() 函數都是用來找出陣列中是否包含某個值,不過它們的回傳值不同,適用的場景也有所不同。
in_array() 傳回 bool 類型的值,通常用來判斷一個值是否存在,而不需要知道它在陣列中的位置。而 array_search() 傳回一個鍵名,通常用來檢查一個值是否存在,並且需要知道它在陣列中的位置。
如果只是對結果的存在與否感興趣,使用 in_array() 函數;如果需要取得該值在陣列中的位置,在使用 array_search() 函數。
四、 array_key_exists() 函數
除了檢查值是否存在於陣列中之外,我們有時也需要檢查某個鍵名是否存在。這時就需要使用到 PHP 內建函數 array_key_exists()。其語法如下:
bool array_key_exists ( mixed $key , array $array )
該函數有兩個參數,其中key 參數是待查找的鍵名,array 參數是待查找的數組。
如果鍵名存在於該數組中,則傳回 true,否則傳回 false。以下是範例:
$arr = array("a" => "apple", "b" => "banana");
if (array_key_exists("a", $arr )) {
echo "键名 a 存在于该数组中。";
}
在上面的範例程式碼中,我們建立了一個數組,並包含了若干個鍵值對。我們檢查其中是否存在 "a" 這個鍵名,因為確實存在,所以輸出 "鍵名 a 存在於該數組中。"。
五、isset() 函數
與 array_key_exists() 函數不同的是,isset() 函數不僅可以檢查一個鍵名是否存在,還可以檢查該鍵名對應的值是否存在。其語法如下:
bool isset ( mixed $var [, mixed $... ] )
該函數可以接受多個參數,其中每個參數可以是一個變量,也可以是一個數組的鍵名。如果該參數存在且其值不是 NULL,則傳回 true,否則傳回 false。
下面是一個範例:
$arr = array("a" => "apple", "b" => "banana");
if (isset( $arr["a"])) {
echo "键名 a 存在于该数组中,并且它的值是 " . $arr["a"];
}
在上面的範例程式碼中,我們使用isset() 函數檢查了"a" 鍵名,如果該鍵名存在,則輸出該鍵名對應的值。
總結
在 PHP 中檢查一個陣列中是否包含某個值,我們可以使用 in_array()、array_search()、array_key_exists() 和 isset() 函數。其中 in_array() 和 array_search() 主要用於檢查值是否存在,而 array_key_exists() 和 isset() 函數主要用於檢查鍵名是否存在。
如果我們只需要檢查一個值是否存在於一個陣列中,使用 in_array() 函數即可。如果我們需要取得某個值在陣列中的鍵名,則可以使用 array_search()。如果我們需要判斷鍵名是否存在於陣列中,使用 array_key_exists() 函數;如果我們需要同時判斷一個鍵名和其對應的值是否存在,則可以使用 isset() 函數。
以上是php檢測數組裡面是否有的詳細內容。更多資訊請關注PHP中文網其他相關文章!