小编Hip*_*ith的帖子

PHP - 以某种方式散列对象,具有相同字段值的 distint 对象具有相同的散列

我正在寻找一种为 PHP 对象生成某种哈希的方法(通用解决方案,如果可能,可以使用所有分类的、内置的和自定义的)。

SplObjectStorage::getHash 不是我要找的,因为它会为给定类的每个实例生成不同的哈希。为了描绘这个问题,让我们考虑一个简单的类:

class A() {
public $field; //public only for simplicity
}
Run Code Online (Sandbox Code Playgroud)

以及该类的 2 个实例:

$a = new A(); $a->field = 'b';
$b = new A(); $b->field = 'b';
Run Code Online (Sandbox Code Playgroud)

我尝试过的每个内置函数都会为这些对象返回不同的哈希值,而我想要一些function f($x)带有 property 的f($a) == f($b) => $a == $b

我知道我可以编写一个递归遍历所有对象属性的函数,直到找到一个可以转换为字符串的属性,以奇特的方式连接这些字符串和散列,但这种解决方案的性能会很糟糕。

有没有一种有效的方法来做到这一点?

php hash performance

5
推荐指数
1
解决办法
810
查看次数

标签 统计

hash ×1

performance ×1

php ×1