Bir PHP dizisi veya nesnesi veya diğer karmaşık veri yapısı , çalışan bir PHP betiğinin dışında taşınamaz veya depolanamaz veya başka şekilde kullanılamaz . İsterseniz devam bir komut dosyası tek vadede ötesinde böyle karmaşık veri yapısını yapmanız gerekenler seri onu. Bu, yapıyı, veritabanları, metin dosyaları, soketler gibi PHP dışındaki şeyler tarafından işlenebilecek "daha düşük bir ortak payda" içine koymak anlamına gelir. Standart PHP işlevi serialize, böyle bir şeyi ifade etmek için sadece bir biçimdir , bir veri yapısını PHP'ye özgü bir dizge temsiline serileştirir ve kullanılarak bir PHP nesnesine ters çevrilebilir unserialize. Yine de JSON veya XML gibi birçok başka format vardır.
Örneğin şu yaygın sorunu ele alalım:
Bir PHP dizisini Javascript'e nasıl geçiririm?
PHP ve Javascript yalnızca dizeler aracılığıyla iletişim kurabilir. Dizeyi "foo"çok kolay bir şekilde Javascript'e iletebilirsiniz . Numarayı 1çok kolay bir şekilde Javascript'e iletebilirsiniz . Boole değerlerini trueve falsekolaylıkla Javascript'e aktarabilirsiniz . Ama bu diziyi Javascript'e nasıl geçirirsiniz?
Array ( [1] => elem 1 [2] => elem 2 [3] => elem 3 )
Cevap serileştirmedir . PHP / Javascript söz konusu olduğunda, JSON aslında daha iyi serileştirme formatıdır:
{ 1 : 'elem 1', 2 : 'elem 2', 3 : 'elem 3' }
Javascript, bunu kolaylıkla gerçek bir Javascript dizisine çevirebilir.
Bu, aynı veri yapısının bir temsilidir, ancak:
a:3:{i:1;s:6:"elem 1";i:2;s:6:"elem 2";i:3;s:7:" elem 3";}
Ancak hemen hemen sadece PHP bunu kullanır, bu format için başka hiçbir yerde çok az destek vardır.
Bu çok yaygındır ve iyi desteklenir:
<array>
<element key='1'>elem 1</element>
<element key='2'>elem 2</element>
<element key='3'>elem 3</element>
</array>
Karmaşık veri yapılarını dizeler halinde geçirmeniz gereken birçok durum vardır . Diziler olarak rastgele veri yapılarını temsil eden serileştirme, bunun nasıl yapılacağını çözer.