为什么 in_array 以 Object::Class 为键返回 false?

这很奇怪,我不明白为什么。


我有这个数组:


$exludedAction = [UserController::class => [

            "login", "register"

    ]

];

当我检查键是否为 in_array 时,它返回 false:


$type = get_class($userControllerObject);

$cl = in_array($type, $exludedAction); // is false

我检查严格比较: $c = $type === UserController::class; // returns true


请注意,UserController::class它位于命名空间内:App\namespace\class.


并检查是否isset返回 true: isset($exludedAction[$type]); // returns true


函数式编程
浏览 55回答 1
1回答

潇潇雨雨

in_array在数组中搜索值,而不是键。你应该array_key_exists改用:$exludedAction = [UserController::class => [            "login", "register"    ]];$type = get_class($userControllerObject);$cl = array_key_exists($type, $exludedAction);var_dump($cl);输出:bool(true)3v4l.org 上的演示
打开App,查看更多内容
随时随地看视频慕课网APP