首頁 >後端開發 >PHP問題 >php怎麼找出陣列中是否存在指定字串

php怎麼找出陣列中是否存在指定字串

PHPz
PHPz原創
2023-04-20 09:07:55677瀏覽

對於 PHP 開發者來說,經常需要使用到陣列。數組以鍵值對的方式存儲,當資料量比較大時,查找某個元素可能會變得很耗時。 PHP 內建了多種函數來找出陣列中是否存在指定值,本文將介紹其中的一些函數,以及它們之間的差異。

in_array 函數

in_array() 函數是 PHP 內建的陣列函數之一,它用於在陣列中尋找指定的值。它的語法如下:

bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )

其中,

  • mixed $needle:要尋找的值。
  • array $haystack:尋找的陣列。
  • bool $strict:是否使用嚴格模式。如果為 true,則搜尋會比較資料類型,且不同類型的值不相等。預設為 false。

此函數將傳回布林值,表示值是否在陣列中。如果是,則傳回 true,否則傳回 false。

例如,以下程式碼示範如何使用in_array() 函數來尋找字串"apple" 是否存在於陣列$fruits 中:

$fruits = array("banana", "orange", "apple", "lemon");

if (in_array("apple", $fruits)) {
    echo "找到了 apple。";
} else {
    echo "没有找到 apple。";
}

輸出結果為:

找到了 apple。

array_search 函數

array_search() 函數也是PHP 內建的陣列函數之一,它用於在陣列中尋找指定的值,並傳回它的鍵。它的語法如下:

mixed array_search ( mixed $needle , array $haystack [, bool $strict = false ] )

其中,

  • mixed $needle:要尋找的值。
  • array $haystack:尋找的陣列。
  • bool $strict:是否使用嚴格模式。如果為 true,則搜尋會比較資料類型,且不同類型的值不相等。預設為 false。

該函數將傳回找到的值的鍵(使用數字鍵和關聯鍵),如果沒找到,則傳回 false。

例如,以下程式碼示範如何使用array_search() 函數來尋找字串"apple" 是否存在於陣列$fruits 中,並傳回它的鍵:

$fruits = array("banana", "orange", "apple", "lemon");
$key = array_search("apple", $fruits);

if ($key) {
    echo "找到了 apple,它的键是 " . $key . "。";
} else {
    echo "没有找到 apple。";
}

輸出結果為:

找到了 apple,它的键是 2。

需要注意的是,如果值對應的鍵是0,則array_search() 函數會傳回0,這可能會導致程式出現問題,因此需要進行類型判斷。

isset 和array_key_exists 函數

isset() 函數和array_key_exists() 函數都可以用來判斷數組中是否存在某個鍵,語法如下:

bool isset ( mixed $var [, mixed $... ] )
bool array_key_exists ( mixed $key , array $array )

其中,

  • mixed $var/$key:要尋找的鍵。
  • mixed $...:可選。要尋找的多個鍵。
  • array $array:尋找的陣列。

兩個函數都會傳回一個布林值,表示鍵是否存在於陣列中。

要注意的是,兩個函數的差異在於,isset() 函數也可以用來判斷變數是否存在,如果變數未聲明,會傳回 false。而 array_key_exists() 函數只能用於數組,並且不支援搜尋多維數組。

例如,以下程式碼示範如何使用isset() 函數和array_key_exists() 函數來判斷鍵是否存在:

$fruits = array("banana" => 2, "orange" => 3, "apple" => 4, "lemon" => 1);

if (isset($fruits["banana"])) {
    echo "存在键 banana。";
} else {
    echo "不存在键 banana。";
}

if (array_key_exists("orange", $fruits)) {
    echo "存在键 orange。";
} else {
    echo "不存在键 orange。";
}

輸出結果為:

存在键 banana。存在键 orange。

總結

本文介紹了PHP 陣列中四個用於尋找元素的函數:in_array()array_search()isset()array_key_exists()。這些函數可以根據不同的需求選擇使用,其中 array_search() 函數具有一定的優勢,因為它會傳回鍵,而不是布林值。但要注意的是,要判斷值是否在陣列中,最好使用 in_array() 函數,因為如果鍵是 0,array_search() 函數會傳回 0。

最後,值得一提的是,以上函數皆不適用於多維數組,對於多維數組,我們需要使用遞迴或其他演算法來完成查找操作。

以上是php怎麼找出陣列中是否存在指定字串的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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