PHP Conference Japan 2024

Ds\Hashable::hash

(PECL ds >= 1.0.0)

Ds\Hashable::hash返回用作哈希值的标量值

描述

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

返回用作对象哈希值的标量值。

虽然哈希值不定义相等性,但根据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;
}

/**
* 对于所有相等的对象应返回相同的值,但不一定唯一。此值不会用于确定相等性。
*/
public function hash()
{
return
$this->email;
}

/**
* 这决定了相等性,通常在哈希表查找期间确定桶的键是否与查找键匹配。如果对象相等,则哈希必须相等,否则将无法达到此确定。
*/
public function equals($obj): bool
{
return
$this->name === $obj->name
&& $this->email === $obj->email;
}
}
?>
添加备注

用户贡献的笔记

此页面没有用户贡献的笔记。
To Top