偶尔,我发现我需要对一些对象进行排序,将它们按多个值分组.我通常通过将值连接在一起,在它们之间使用下划线或其他描述符来完成此操作,然后将其用作数组索引.
// 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)
我已经使用过最好的方法,还是有更好的方法?
使用PHP的序列化使它更整洁,但效率更低:
function sha1_multiple() {
$args = func_get_args();
return sha1(serialize($args));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1255 次 |
| 最近记录: |