एक PHP सरणी या ऑब्जेक्ट या अन्य जटिल डेटा संरचना को ट्रांसपोर्ट किए गए PHP स्क्रिप्ट के बाहर परिवहन या संग्रहीत या अन्यथा उपयोग नहीं किया जा सकता है । यदि आप स्क्रिप्ट के एकल रन से परे इस तरह की जटिल डेटा संरचना को जारी रखना चाहते हैं , तो आपको इसे क्रमबद्ध करने की आवश्यकता है । इसका मतलब है कि संरचना को एक "निचले आम भाजक" में रखा जाए, जिसे डेटाबेस, पाठ फ़ाइलों, सॉकेट्स की तरह PHP के अलावा अन्य चीजों से भी नियंत्रित किया जा सकता है। मानक PHP फ़ंक्शन ऐसी चीज़ को व्यक्त करने के लिए serializeसिर्फ एक प्रारूप है, यह एक डेटा संरचना को एक स्ट्रिंग प्रतिनिधित्व में अनुक्रमित करता है जो PHP के लिए अद्वितीय है और इसका उपयोग करके PHP ऑब्जेक्ट में उलट किया जा सकता है unserialize। हालांकि JSON या XML जैसे कई अन्य प्रारूप हैं।
इस आम समस्या का उदाहरण लें:
मैं जावास्क्रिप्ट के लिए एक PHP सरणी कैसे पास करूं ?
PHP और जावास्क्रिप्ट केवल तार के माध्यम से संवाद कर सकते हैं। आप "foo"बहुत आसानी से जावास्क्रिप्ट को स्ट्रिंग पास कर सकते हैं । आप 1बहुत आसानी से जावास्क्रिप्ट को नंबर पास कर सकते हैं । आप बूलियन मान trueऔर falseआसानी से जावास्क्रिप्ट को पास कर सकते हैं । लेकिन आप इस सरणी को जावास्क्रिप्ट में कैसे पास करते हैं?
Array ( [1] => elem 1 [2] => elem 2 [3] => elem 3 )
इसका उत्तर क्रमबद्धता है । PHP / जावास्क्रिप्ट के मामले में, JSON वास्तव में बेहतर क्रमांकन प्रारूप है:
{ 1 : 'elem 1', 2 : 'elem 2', 3 : 'elem 3' }
जावास्क्रिप्ट आसानी से इसे एक वास्तविक जावास्क्रिप्ट सरणी में बदल सकता है।
हालांकि यह समान डेटा संरचना का प्रतिनिधित्व करने के लिए मान्य है:
a:3:{i:1;s:6:"elem 1";i:2;s:6:"elem 2";i:3;s:7:" elem 3";}
लेकिन बहुत अधिक केवल PHP इसका उपयोग करता है, इस प्रारूप के लिए कहीं और बहुत कम समर्थन है।
हालांकि यह बहुत ही सामान्य और अच्छी तरह से समर्थित है:
<array>
<element key='1'>elem 1</element>
<element key='2'>elem 2</element>
<element key='3'>elem 3</element>
</array>
कई परिस्थितियां हैं जहां आपको स्ट्रिंग्स के रूप में जटिल डेटा संरचनाओं को पास करने की आवश्यकता होती है । धारावाहिककरण, स्ट्रिंग्स के रूप में मनमाने ढंग से डेटा संरचनाओं का प्रतिनिधित्व करते हुए, यह हल करता है कि यह कैसे करना है।