Подтвердить что ты не робот

Хеширование всего массива PHP в уникальное значение

Ищете способ создания хэш файла с поддержкой имен файлов данного массива PHP. Я сейчас делаю:

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

... но с помощью print_r() он чувствует себя "взломанным", чтобы генерировать строку, уникальную для каждого массива.

Любые яркие идеи для более чистого способа сделать это?

ИЗМЕНИТЬ Ну, похоже, все думают, что сериализация лучше подходит для этой задачи. Почему? Я не беспокоюсь о том, чтобы когда-либо получать информацию о переменной после ее хэширования (что хорошо, так как это односторонний хэш!). Спасибо за ответы!

4b9b3361

Ответ 1

Используйте md5(serialize()) вместо print_r().

print_r() Цель в основном заключается в функции отладки и отформатирована для отображения в виде обычного текста, тогда как serialize() кодирует представление массива или объекта в виде компактной текстовой строки для сохранения в хранилище базы данных или сеанса (или любого другого механизма устойчивости).

Ответ 2

В качестве альтернативы вы можете использовать json_encode

Ответ 3

serialize() должен работать нормально.

Он имеет дополнительное преимущество при вызове магического метода __sleep для объектов и является самым чистым методом сериализации, доступным в PHP в целом.

Ответ 4

Как насчет сериализации?

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

Ответ 5

Использование serialize() может быть более консервативным, если вы хотите сохранить тип и т.д.