【问题标题】:Why does in_array returns false with Object::Class as key?为什么 in_array 以 Object::Class 作为键返回 false?
【发布时间】:2020-04-14 02:00:19
【问题描述】:

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

我有这个数组:

$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

【问题讨论】:

  • in_array 搜索 values,而不是 keys

标签: php php-7.3


【解决方案1】:

in_array 在数组中搜索 values,而不是 keys。你应该改用array_key_exists

$exludedAction = [UserController::class => [
            "login", "register"
    ]
];


$type = get_class($userControllerObject);
$cl = array_key_exists($type, $exludedAction);

var_dump($cl);

输出:

bool(true)

Demo on 3v4l.org

【讨论】:

    猜你喜欢
    • 2017-10-23
    • 2021-01-01
    • 1970-01-01
    • 2018-11-15
    • 1970-01-01
    • 1970-01-01
    • 2011-07-13
    • 2013-09-18
    • 2014-11-17
    相关资源
    最近更新 更多