多值的哈希方法?

kei*_*ant 4 php sorting hash

偶尔,我发现我需要对一些对象进行排序,将它们按多个值分组.我通常通过将值连接在一起,在它们之间使用下划线或其他描述符来完成此操作,然后将其用作数组索引.

// group all objects with a common parent_id, date, and type
foreach ($objects as $obj) {
    $hash = $obj->parent_id . '_' . $obj->date  . '_' . $obj->type;
    $sorted_objects[$hash][] = $obj;
}
Run Code Online (Sandbox Code Playgroud)

...麻烦!除了滥用PHP的松散输入和字符串连接之外,还有一种更好的方法.有没有办法对多个值执行哈希?看来我应该能够做这样的事情:

$hash = sha1_multiple($obj->parent-id, $obj->date, $obj->type);
Run Code Online (Sandbox Code Playgroud)

我已经使用过最好的方法,还是有更好的方法?

Lon*_*ars 5

使用PHP的序列化使它更整洁,但效率更低:

function sha1_multiple() {
    $args = func_get_args();
    return sha1(serialize($args));
}
Run Code Online (Sandbox Code Playgroud)


caw*_*caw 3

由于哈希键是字符串,因此您可能已经通过字符串连接的哈希以最好的方式执行此操作 - 这就是我过去在需要时执行类似功能的方式。