通過前面的學習我們知道,在陣列中搜尋一個指定的鍵值是否存在,可以使用《in_array() 函數》,在 PHP 中還有另外一個函數與 in_array() 函數功能相似但返回值有點不同的函數——array_search() 函數。
array_search() 函數可以在陣列中搜尋給定的值,如果成功則返回首個相應的鍵名,該函數的語法格式如下:
array_search($needle, $haystack[, $strict = false])
引數說明如下:
-
$needle:為要搜尋的值,如果 $needle 為字串型別,則在搜尋時區分大小寫;
-
$haystack:為一個陣列;
-
$strict:可選引數,可以為空,預設為 False。
-
如果 $strict 為 False,則 array_search() 在 $haystack 中搜尋 $needle 時僅會比較值,不比較型別。
-
如果 $strict 為 True,則 array_search() 在 $haystack 中搜尋 $needle 時會同時比較值和型別。
array_search() 函數如果找到了 $needle 則返回它的鍵,否則返回 False。
如果 $needle 在 $haystack 中出現不止一次,則僅會返回第一個匹配的鍵。若要返回所有匹配值的鍵,應該用 array_keys() 函數來代替。
【範例】使用 array_search() 函數搜尋陣列中的鍵名。
<?php
$array = array(
'name' => 'C語言中文網',
'url' => 'http://c.biancheng.net/php/',
'title' => 'PHP教學',
'pid' => 1111,
'level' => 1111,
'info' => array(
'id' => 1234,
'article' => 'array_search() 函數'
)
);
echo '<pre>';
var_dump(array_search('1234', $array));
var_dump(array_search('PHP教學', $array));
var_dump(array_search('1111', $array, true));
var_dump(array_search(1111, $array, true));
?>
執行結果如下:
bool(false)
string(5) "title"
bool(false)
string(3) "pid"
通過執行結果可以看出,array_search() 函數同樣僅適用於一維陣列,對於多維陣列中第一維度以外的維度則不適用。