尋找一種方法來產生給定PHP數組的文件名安全散列。目前,我正在做的:將整個PHP數組散列到唯一值中
$filename = md5(print_r($someArray, true));
...但感覺「哈克」使用的print_r()來生成唯一的每個陣列的字符串。
任何明智的想法,一個更清潔的方式來做到這一點?
編輯 好吧,似乎每個人都認爲serialize更適合這項任務。任何理由?我並不擔心它會在散列後檢索有關變量的信息(這很好,因爲它是單向散列!)。謝謝你的回覆!
尋找一種方法來產生給定PHP數組的文件名安全散列。目前,我正在做的:將整個PHP數組散列到唯一值中
$filename = md5(print_r($someArray, true));
...但感覺「哈克」使用的print_r()來生成唯一的每個陣列的字符串。
任何明智的想法,一個更清潔的方式來做到這一點?
編輯 好吧,似乎每個人都認爲serialize更適合這項任務。任何理由?我並不擔心它會在散列後檢索有關變量的信息(這很好,因爲它是單向散列!)。謝謝你的回覆!
serialize()
應該可以正常工作。
它具有對對象調用__sleep
神奇方法的額外優勢,並且是PHP中整體可用的最清晰的序列化方法。
感謝您的輸入! – loneboat 2011-02-23 22:09:32
,如果你想保持型等使用serialize()
可能是較爲保守......
什麼連載?
$filename = md5(serialize($someArray));
另外,您可以使用json_encode
我覺得這是做的一個相當不錯的方式,其實。 – Dutchie432 2011-02-23 21:54:10
我會說這兩種方式同樣有效。但是,考慮到它們之間的差異,作爲使用序列化而不是print_r的原則,看起來更爲正確。但是,只有當你像我這樣的程序員OCD。 :) – OCDev 2016-09-27 09:51:29