Avatar ·

PHP数组序列化:json_encode vs serialize — 如何选择?

大家好!我是PHP新手,在开发一个项目时遇到了一个难题。我需要将数组保存到缓存(文件或Redis),然后再读取回来。我找到了两种方法:serialize() 和 json_encode()。但我不确定哪种更好。 以下是我的代码示例: ```php // 选项1:serialize $data = ['user' => 'Иван', 'age' => 30, 'hobbies' => ['чтение', 'программирование']]; $serialized = serialize($data); file_put_contents('cache.txt', $serialized); $restored = unserialize(file_get_contents('cache.txt')); // 选项2:json_encode $json = json_encode($data, JSON_UNESCAPED_UNICODE); file_put_contents('cache.json', $json); $decoded = json_decode(file_get_contents('cache.json'), true); ``` 两种方法似乎都能工作,但我注意到一些奇怪的地方: 1. serialize() 生成的字符串更“杂乱”,包含一些字母和数字。 2. json_encode() 生成干净的JSON,可以在任何编辑器中打开。 3. 处理俄语字符时,json_en