我有一個包含靜態數組的類,它的鍵是字串,值是數組。如果存在特定的數組值,我想取得它的鍵。
我以為使用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" 。這對我來說似乎不太對。
正如評論中指出的那樣,我的測試案例在調用bar()時傳遞了'Driving',而實際上應該傳遞'Facility'。現在我只需要回到原來的程式碼看看為什麼傳遞了錯誤的值。非常尷尬,抱歉帶給您困擾。