تسلسل مصفوفات PHP: json_encode مقابل 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