2011-03-11 6 views
3

가끔은 여러 객체로 그룹화하여 여러 값으로 정렬해야하는 경우가 있습니다. 일반적으로 값을 연결하여 밑줄이나 중간에 다른 구분 기호로 연결 한 다음 배열 인덱스로 사용하여이 작업을 수행합니다.다중 값의 해시 메소드?

// 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; 
} 

... ick! PHP의 느슨한 입력 및 문자열 연결을 악용하는 것보다 더 나은 방법이 있어야합니다. 여러 값에 대해 해시를 수행 할 수있는 방법이 있습니까? 그냥 이런 식으로 뭔가 할 수있을 것 같다 : 이미 최선의 방법을 사용하여

$hash = sha1_multiple($obj->parent-id, $obj->date, $obj->type); 

암을, 또는 더 나은 방법은 무엇입니까?

+0

간단한 문자열 연결보다 훨씬 빠르지 않습니다. –

+0

모든 키가 동일한 문자열 길이가 될 필요가 없다면 SHA1 단계조차도 필요하지 않습니다. – caw

답변

2

- 그 방법을 나는 과거에해야 할 때 비슷한 기능을 수행했습니다.

4

PHP의 직렬화를 사용하여 그것을 비트 깔끔한하지만, 덜 효율적 :

해시 키 당신은 아마 이미 가장 좋은 방법은하고있는 문자열은 문자열 연결의 해시를 통해 때문에
function sha1_multiple() { 
    $args = func_get_args(); 
    return sha1(serialize($args)); 
} 
관련 문제