2016-10-11 4 views
3

Я хочу создать функцию, которая не будет создавать ошибки, если она передана аргументам, которые не являются действительными ключами массива, и успешно проверить, задан ли аргумент как ключ в массиве.Как определить, является ли переменная допустимым ключом массива?

static function IsAwesome($name) { 
    return isset(self::$_awesomeThings[$name]); 
} 

Это создает прекрасное сообщение, когда кто-то проходит, скажем, объект как $ имя:

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

Что это самый простой способ, чтобы избежать такого поведения, не исключая потенциально действительных ключей, как true, например, ? Предположим, что существующий код, который не может быть изменен, уже использует это поведение.

+1

[GetType()] (https://secure.php.net/manual/en/function.gettype.php), а затем править out массивов и объектов согласно [документации массива PHP] (https://secure.php.net/manual/en/language.types.array.php) – syck

+0

Зависит от того, что вы хотите сделать, если не действительный тип. 'is_string() || is_int() '. – AbraCadaver

+0

BTW 'false' будет передан' 0' и 'true' в' 1', поэтому они действительно недействительны. – AbraCadaver

ответ

Смежные вопросы