3

PHP 文档指出:

数组和对象不能用作键。这样做会导致警告:非法偏移类型。

AFAIK,PHP 数组是有序的哈希映射。那么,为什么本身就禁止使用对象作为键,有这个限制的原因吗?为什么不可能在类中实现散列函数以将其用作键?

在相关说明中,是否有解决此问题的哈希映射的 PHP 实现?

4

2 回答 2

3

密钥需要是不可变的才能使它们工作。如果您的对象是可变的,那么它们就不能是键。在实现它们的每种语言中都是如此:Java、C# 等。

于 2012-12-10T01:59:08.783 回答
2

请参阅@duffymo 以获取答案。

请注意,有一种“解决方法”,通过使用spl_object_hash作为您的密钥。这将返回一个字符串,该字符串是不可变的,可以用作键,并且对于占用该内存地址的任何对象都是相同的。(读取:spl_object_hash无论在何处调用或对象是否已更改,都将为同一实例返回相同的值)

于 2012-12-10T02:01:44.187 回答