可以使用PHP的array_search()函數來搜尋值本身就是陣列的情況嗎?
P粉798343415
P粉798343415 2023-07-19 23:47:04
0
1
582

我有一個包含靜態數組的類,它的鍵是字串,值是數組。如果存在特定的數組值,我想取得它的鍵。

我以為使用array_search()函數的程式碼可以實現這個功能,但它找不到該值,而是列印出false。我以為"strict"參數可能會有所不同,但它似乎沒有起作用。我做錯了什麼嗎?編寫搜尋程式碼的最佳方式是什麼?

$ cat foo.php
<?php
class foo {
    static $name_to_bitnum = array(
        'Water Obstacle' => array('kind' => 'Facility', 'bitnum' => 5),
        'Driving' => array('kind' => 'Facility', 'bitnum' => 6),
        'Trails' => array('kind' => 'Facility', 'bitnum' => 7),
   );

    public static function bar($kind, $bitnum) {
        $search = array_search(array('kind' => $kind, 'bitnum' => $bitnum), self::$name_to_bitnum, $strict = false);
        // $search = array_search(self::$name_to_bitnum['Driving'], self::$name_to_bitnum, $strict = false);
        return $search;
    }
}
$foo = new foo();
echo var_dump($foo->bar('Driving', 6));
?>

$ php foo.php
C:xampp1826htdocsOSH0foo.php:21:
bool(false)

我注意到,如果我取消註解掉的那行程式碼,並使用我要尋找的陣列元素的值,透過對陣列進行索引,那麼它就能成功並列印出字串(7) "Driving" 。這對我來說似乎不太對。

P粉798343415
P粉798343415

全部回覆(1)
P粉614840363

正如評論中指出的那樣,我的測試案例在調用bar()時傳遞了'Driving',而實際上應該傳遞'Facility'。現在我只需要回到原來的程式碼看看為什麼傳遞了錯誤的值。非常尷尬,抱歉帶給您困擾。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板