我有一个客户端的IP地址和一个包含简单单词的数组。让我们说......
$ip_addr = ip2long('172.16.254.12'); //returns an integer
和
$words = array('cat', 'dog', 'nest', 'barn', 'etc'); //arbitrary length
我试图找出一种巧妙的方法,将ip地址一致地映射到数组中的位置,以便172.16.254.12
总是变成cat
等等,而另一个IP会变成说,dog
。理想情况下,这个过程不容易逆转,以掩盖客户端的IP地址,不应该有太多的冲突(但碰撞不是那么重要)。我知道这需要一个哈希表,但不完全确定如何实现它。现在不用担心ipv6。
答案 0 :(得分:2)
不需要散列功能:
$ip_addr = ip2long('172.16.254.12'); //returns an integer
$words = array('cat', 'dog', 'nest', 'barn', 'etc'); //arbitrary length
$chosen_word = $words[$ip_addr % count($words)];