我有一个包含静态数组的类,它的键是字符串,值是数组。如果存在特定的数组值,我想获取它的键。
我以为使用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"。这对我来说似乎不太对。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
正如评论中指出的那样,我的测试用例在调用bar()时传递了'Driving',而实际上应该传递'Facility'。现在我只需要回到原来的代码中看看为什么传递了错误的值。非常尴尬,抱歉给您带来困扰。