开发者

Hashing an entire PHP array into a unique value [duplicate]

This ques开发者_StackOverflow中文版tion already has answers here: PHP best way to MD5 multi-dimensional array? (14 answers) Closed 8 years ago.

Looking for a way to produce a filename-safe hash of a given PHP array. I'm currently doing:

$filename = md5(print_r($someArray, true));

... but it feels "hacky" using print_r() to generate a string unique to each array.

Any bright ideas for a cleaner way to do this?

EDIT Well, seems everyone thinks serialize is better suited to the task. Any reason why? I'm not worried about ever retrieving information about the variable after it's hashed (which is good, since it's a one-way hash!). Thanks for the replies!


Use md5(serialize()) instead of print_r().

print_r()'s purpose is primarily as a debugging function and is formatted for plain text display, whereas serialize() encodes an array or object representation as a compact text string for persistance in database or session storage (or any other persistance mechanism).


Alternatively you could use json_encode


serialize() should work fine.

It has the additional advantage of invoking the __sleep magic method on objects, and being the cleanest serialization method available in PHP overall.


What about serialize?

$filename = md5(serialize($someArray));


Using serialize() might be more conservative if you want to keep the type, etc...

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜