【发布时间】:2015-10-17 23:57:42
【问题描述】:
我正在寻找一种为 PHP 对象生成某种散列的方法(通用解决方案,如果可能,使用所有分类、内置和自定义)。
SplObjectStorage::getHash 不是我想要的,因为它会为给定类的每个实例生成不同的哈希。为了描述这个问题,让我们考虑一个简单的类:
class A() {
public $field; //public only for simplicity
}
以及该类的 2 个实例:
$a = new A(); $a->field = 'b';
$b = new A(); $b->field = 'b';
我尝试过的每个内置函数都会为这些对象返回不同的哈希值,而我想要一些 function f($x) 和属性 f($a) == f($b) => $a == $b。
我知道我可以编写一个递归遍历所有对象属性的函数,直到找到一个可以转换为字符串的属性,以奇特的方式连接这些字符串并散列,但是这种解决方案的性能会很糟糕。
有没有一种有效的方法来做到这一点?
【问题讨论】:
标签: php performance hash