PHP
数据结构 | Data Structures

Ds\Hashable::hash

Ds\Hashable::hash

(PECL ds >= 1.0.0)

Ds\Hashable::hash — Returns a scalar value to be used as a hash value.

描述

abstract public mixed Ds\Hashable::hash ( void )

返回要用作对象散列值的标量值。

尽管哈希值没有定义相等性,但根据Ds \ Hashable :: equals()相等的所有对象都必须具有相同的哈希值。相同对象的哈希值不必是唯一的,例如,您可以返回TRUE所有对象并且没有任何内容会被破坏 - 唯一的含义是哈希表会变成链接列表,因为所有对象都将哈希到相同桶。因此,选择一个好的散列值非常重要,例如ID或电子邮件地址。

此方法允许将对象用作Ds\MapDs\Set等结构中的键,或者其他任何查找此界面的结构。

警告

不要选择可能在对象内更改的值,例如公共属性。散列表查找将失败,因为散列已更改。

警告

所有相同的对象必须具有相同的散列值。

参数

该功能没有参数。

返回值

要用作此对象的哈希值的标量值。

例子

示例#1 Ds \ Hashable :: hash()示例

<?php class HashableObject implements \Ds\Hashable {     private $name;     private $email;     public function __construct($name, $email)     {         $this->name  = $name;         $this->email = $email;     }     /**      * Should return the same value for all equal objects, but doesn't have to      * be unique. This value will not be used to determine equality.      */     public function hash()     {         return $this->email;     }     /**      * This determines equality, usually during a hash table lookup to determine      * if the bucket's key matches the lookup key. The hash has to be equal if      * the objects are equal, otherwise this determination wouldn't be reached.      */     public function equals($obj): bool     {         return $this->name  === $obj->name             && $this->email === $obj->email;     } } ?>

← Ds\Hashable::equals

Sequence →