寻找一种方法来生成给定PHP数组的文件名安全哈希值。目前我的方法是:
$filename = md5(print_r($someArray, true));
... 但使用print_r()来生成每个数组唯一字符串感觉有些“hacky”。
有没有更简洁的方法呢?
编辑 好吧,似乎所有人都认为序列化更适合这项任务。 有什么原因吗?我不担心在哈希后检索有关变量的信息(这很好,因为它是单向哈希!)。谢谢大家的回复!
使用md5(serialize())
代替print_r()
。
print_r()
的主要目的是作为调试函数,并且其格式化为纯文本显示,而serialize()
将数组或对象表示编码为紧凑的文本字符串以在数据库或会话存储(或任何其他持久性机制)中进行持久化。
或者您可以使用json_encode。
serialize()
应该可以正常使用。
它有额外的优点,即调用对象的 __sleep
魔术方法,并且是 PHP 中最干净的序列化方法。
关于序列化,您怎么看?
$filename = md5(serialize($someArray));
serialize()
可能更加保守,如果您想保留类型等信息...
sha1
seems more unique.$sign = sha1(json_encode($data));
- Hebe