PHP array_search():在陣列中搜尋給定的值並返回鍵名或索引

2020-07-16 10:05:26
通過前面的學習我們知道,在陣列中搜尋一個指定的鍵值是否存在,可以使用《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() 函數同樣僅適用於一維陣列,對於多維陣列中第一維度以外的維度則不適用。