检查对象是否作为数组的键存在的最佳方法是什么?
// key: $obj, array: $array
array_key_exists($obj, $array);
导致 PHP 警告:“第一个参数应该是字符串或整数”。
我很确定你想要 property_exists()
编辑:在回答时,标题是“array_key_exists,但带有对象”
对象不能是数组的键。
<?php
$x = new stdClass;
$y = [$x => 1]; // PHP Warning: Illegal offset type
通过使用
ArrayAccess
接口,你可以得到一些奇怪的东西,看起来对象是数组的键,但是 array_key_exists
对此不起作用。
if(isset($obj->a))
http://php.net/manual/en/function.isset.php
if the property exists, but is not defined isset() will return false.