我正在寻找一个看起来像
的功能$hash = someFunction($value1,$value2);
散列在值的基础上是唯一的,但是,无论参数的顺序如何,它都应该返回相同的散列。所以(3,5)将返回与(5,3)相同的哈希。
有这样一种已知的算法吗?
为了给出我想要实现的内容的上下文,在我的数据库中,我有一个表,表示user1和user2之间的消息,有一对列user1,user2。我想要GROUP BY对,不管顺序如何。这意味着,我希望看到两个用户之间的完整对话。
我在想如果我能在表格中添加一个识别唯一对的字符串,它会让我的生活更轻松。
答案 0 :(得分:2)
如何首先排序$value1
和$value2
,连接它们,然后使用任何已知的哈希算法?
答案 1 :(得分:1)
好吧,我会这样做(假设两个参数都是相同的数据类型)
function someFunc($val1, $val2){
if($val1>$val2){
$val3 = $val2;
$val2 = $val1;
$val1 = $val3;
}
//if the params are string, compare the length of string and assign $val1 with the greater length, and $val2 with smaller
//if the length of strings are equal, compare the string and assign $val1 with the string that comes ahead alphabetically,
//if both strings are identical, you can not-care about the order of params.
//Do whatever you would like to do
}
现在即使你把这个功能称为
someFunc(5,3)
params的值会自动交换,使调用与
相同someFunc(3,5)
同样适用于字符串