首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Ds\Hashable::hash

(PECL ds >= 1.0.0)

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

描述

代码语言:javascript
复制
abstract public mixed Ds\Hashable::hash ( void )

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

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

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

警告

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

警告

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

参数

该功能没有参数。

返回值

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

例子

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

代码语言:javascript
复制
<?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 →

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com