खाली कंटेनर का जादू: PHP को अपने लिए कैसे काम करें
\n\nकल्पना करें: आप PHP में एक स्क्रिप्ट लिख रहे हैं, और आपको डेटा इकट्ठा करना है — जैसे, कार्ट से प्रोडक्ट ID। आप एक खाली ऐरे बनाते हैं, फिर लूप में उसमें एलिमेंट जोड़ते हैं। लगता है कितना आसान है? लेकिन यही क्षण — PHP खाली ऐरे में एलिमेंट जोड़ना — Stack Overflow पर हजारों सवालों का कारण बनता है। क्यों? क्योंकि शुरुआती लोग अक्सर सिंटैक्स में उलझ जाते हैं, और अनुभवी डेवलपर्स जानना चाहते हैं कि अंदर क्या होता है।
\n\nइस लेख में हम सिर्फ सही कोड लिखना नहीं दिखाएंगे। हम PHP के कोर (Zend Engine) में झांकेंगे, समझेंगे कि $arr[] = $value और array_push() में क्या अंतर है, और जानेंगे कि PHP 8.1 क्या नए सरप्राइज लेकर आया है। तैयार हैं? चलिए शुरू करते हैं!
सबसे आम सवाल: एलिमेंट कैसे जोड़ें?
\n\nअगर आप नए हैं, तो शायद सबसे पहले आपके दिमाग में कुछ इस तरह का कोड आएगा:
\n\n<?php\n$myArray = array(); // खाली ऐरे\n$myArray[] = 'पहला एलिमेंट';\n$myArray[] = 'दूसरा एलिमेंट';\nprint_r($myArray);\n?>\n\nयह कोड आउटपुट देगा:
\n\nArray\n(\n [0] => पहला एलिमेंट\n [1] => दूसरा एलिमेंट\n)\n\nकाम करता है? हाँ। लेकिन क्यों? आइए समझते हैं कि [] ऑपरेटर वास्तव में क्या करता है।
ऑपरेटर $arr[] = $value: तेज़ और सुंदर
\n\nजब आप $arr[] = $value लिखते हैं, PHP कोई फंक्शन कॉल नहीं करता। इसके बजाय, यह सीधे ऐरे की आंतरिक डेटा संरचना (Zend Engine में zend_array) तक पहुंचता है।
अंदर क्या होता है:
\n- \n
- PHP जांचता है कि ऐरे मौजूद है या नहीं। अगर नहीं है, तो नया बनाता है (लेकिन बेहतर है कि इसे स्पष्ट रूप से इनिशियलाइज़ करें:
$arr = [])। \n - एलिमेंट को ऐरे के अंत में जोड़ता है, और स्वचालित रूप से अगली संख्यात्मक कुंजी (0, 1, 2...) असाइन करता है। \n
- अगर ऐरे खाली था — पहले एलिमेंट को कुंजी
0मिलती है। \n - फंक्शन कॉल का कोई अतिरिक्त खर्च नहीं। यह सबसे परफॉरमेंट तरीका है। \n
सलाह: $arr[] = ... का उपयोग हमेशा करें जब आपको सिर्फ एक एलिमेंट को अंत में जोड़ना हो। यह तेज़, पढ़ने में आसान है, और किसी फंक्शन को इम्पोर्ट करने की ज़रूरत नहीं है।
array_push(): जब एक साथ कई एलिमेंट जोड़ने हों
\n\nदूसरा लोकप्रिय तरीका है array_push() फंक्शन:
<?php\n$myArray = [];\narray_push($myArray, 'पहला', 'दूसरा', 'तीसरा');\nprint_r($myArray);\n?>\n\nपरिणाम वही होगा। लेकिन कुछ बारीकियाँ हैं:
\n- \n
array_push()ऐरे को रेफरेंस के रूप में लेता है और सभी दिए गए मानों को अंत में जोड़ता है। \n - यह ऐरे में एलिमेंट की नई संख्या लौटाता है (PHP 7.3 से शुरू)। \n
- अंदर क्या होता है: फंक्शन प्रत्येक एलिमेंट के लिए आंतरिक प्रक्रिया
zend_hash_next_index_insertको कॉल करता है। इसका मतलब है कि अगर आप एक एलिमेंट जोड़ रहे हैं, तोarray_push()फंक्शन कॉल के अतिरिक्त खर्च के कारण$arr[] = ...से थोड़ा धीमा है। \n
कब उपयोग करें: केवल जब आपको एक साथ कई एलिमेंट (2 या अधिक) जोड़ने हों। एक एलिमेंट के लिए — array_push को भूल जाएं, [] का उपयोग करें।
खाली ऐरे और कुंजियाँ: क्या होगा अगर कुंजियाँ संख्यात्मक न हों?
\n\nअगर आप किसी विशिष्ट कुंजी के साथ एलिमेंट जोड़ना चाहते हैं तो क्या करें? उदाहरण के लिए, एक एसोसिएटिव ऐरे:
\n\n<?php\n$user = [];\n$user['name'] = 'राहुल';\n$user['age'] = 30;\n?>\n\nयहाँ भी सब कुछ सरल है। वर्गाकार कोष्ठक के अंदर कुंजी के साथ [] ऑपरेटर ($arr['key'] = value) असाइनमेंट की तरह काम करता है। अगर कुंजी मौजूद नहीं है — तो वह बन जाती है। अगर मौजूद है — तो ओवरराइट हो जाती है।
लेकिन सावधान रहें: अगर आप गलती से एसोसिएटिव ऐरे के पास $user[] = 'मान' लिख देते हैं, तो PHP एक संख्यात्मक कुंजी जोड़ देगा।