array_key_存在,但以对象作为键

问题描述 投票:0回答:3

检查对象是否作为数组的键存在的最佳方法是什么?

// key: $obj, array: $array
array_key_exists($obj, $array);

导致 PHP 警告:“第一个参数应该是字符串或整数”。

php
3个回答
11
投票

我很确定你想要 property_exists()

编辑:在回答时,标题是“array_key_exists,但带有对象”


2
投票

对象不能是数组的键。

<?php

$x = new stdClass;

$y = [$x => 1]; // PHP Warning:  Illegal offset type

参见https://ideone.com/zR2PXd

通过使用

ArrayAccess
接口,你可以得到一些奇怪的东西,看起来对象是数组的键,但是
array_key_exists
对此不起作用。


1
投票

像这样使用

if(isset($obj->a))

仔细阅读本文档。

http://php.net/manual/en/function.isset.php

if the property exists, but is not defined isset() will return false.
© www.soinside.com 2019 - 2024. All rights reserved.