可以使用PHP的array_search()函数来搜索值本身就是数组的情况吗?
P粉798343415
P粉798343415 2023-07-19 23:47:04
0
1
600

我有一个包含静态数组的类,它的键是字符串,值是数组。如果存在特定的数组值,我想获取它的键。

我以为使用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'。现在我只需要回到原来的代码中看看为什么传递了错误的值。非常尴尬,抱歉给您带来困扰。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板