Php 如何判断变量是否为有效的数组键?

Php 如何判断变量是否为有效的数组键?,php,Php,我想创建一个函数,如果传递的参数不是有效的数组键,则该函数不会创建错误,并成功检查该参数是否设置为数组中的键 static function IsAwesome($name) { return isset(self::$_awesomeThings[$name]); } 当有人以$name的形式传递一个对象时,这会创建一条可爱的消息: Warning: Illegal offset type in isset or empty in ... 在不排除潜在有效键(例如true)的情况

我想创建一个函数,如果传递的参数不是有效的数组键,则该函数不会创建错误,并成功检查该参数是否设置为数组中的键

static function IsAwesome($name) {
    return isset(self::$_awesomeThings[$name]);
}
当有人以$name的形式传递一个对象时,这会创建一条可爱的消息:

Warning:  Illegal offset type in isset or empty in ...

在不排除潜在有效键(例如
true
)的情况下,避免这种行为的最简单方法是什么?假设无法更改的现有代码已经依赖于此行为。

也许您需要类似以下内容:

static function IsAwesome($name) {
    return array_key_exists((string)$name, self::$_awesomeThings);
}

然后根据排除数组和对象,这取决于如果不是有效类型,您要执行的操作<代码>is_string()| | is_int()。顺便说一句
false
将被强制转换为
0
true
1
,所以这些都是无效的。@Abracadver我看到你删除了你的注释,所以我也删除了我的注释。:)