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 に答える