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

對於 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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能