给定2个参数创建唯一的字符串,无论顺序如何

时间:2014-02-02 19:45:15

标签: php mysql uniqueidentifier

我正在寻找一个看起来像

的功能
$hash = someFunction($value1,$value2);

散列在值的基础上是唯一的,但是,无论参数的顺序如何,它都应该返回相同的散列。所以(3,5)将返回与(5,3)相同的哈希。

有这样一种已知的算法吗?

为了给出我想要实现的内容的上下文,在我的数据库中,我有一个表,表示user1和user2之间的消息,有一对列user1,user2。我想要GROUP BY对,不管顺序如何。这意味着,我希望看到两个用户之间的完整对话。

我在想如果我能在表格中添加一个识别唯一对的字符串,它会让我的生活更轻松。

2 个答案:

答案 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)

同样适用于字符串