我有一个包含静态数组的类,它的键是字符串,值是数组。如果存在特定的数组值,我想获取它的键。
我以为使用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'。现在我只需要回到原来的代码中看看为什么传递了错误的值。非常尴尬,抱歉给您带来困扰。