PHP खाली ऐरे में एलिमेंट जोड़ना: अंदर क्या होता है?

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

खाली कंटेनर का जादू: PHP को अपने लिए कैसे काम करें

\n\n

कल्पना करें: आप PHP में एक स्क्रिप्ट लिख रहे हैं, और आपको डेटा इकट्ठा करना है — जैसे, कार्ट से प्रोडक्ट ID। आप एक खाली ऐरे बनाते हैं, फिर लूप में उसमें एलिमेंट जोड़ते हैं। लगता है कितना आसान है? लेकिन यही क्षण — PHP खाली ऐरे में एलिमेंट जोड़ना — Stack Overflow पर हजारों सवालों का कारण बनता है। क्यों? क्योंकि शुरुआती लोग अक्सर सिंटैक्स में उलझ जाते हैं, और अनुभवी डेवलपर्स जानना चाहते हैं कि अंदर क्या होता है।

\n\n

इस लेख में हम सिर्फ सही कोड लिखना नहीं दिखाएंगे। हम PHP के कोर (Zend Engine) में झांकेंगे, समझेंगे कि $arr[] = $value और array_push() में क्या अंतर है, और जानेंगे कि PHP 8.1 क्या नए सरप्राइज लेकर आया है। तैयार हैं? चलिए शुरू करते हैं!

\n\n

सबसे आम सवाल: एलिमेंट कैसे जोड़ें?

\n\n

अगर आप नए हैं, तो शायद सबसे पहले आपके दिमाग में कुछ इस तरह का कोड आएगा:

\n\n
<?php\n$myArray = array(); // खाली ऐरे\n$myArray[] = 'पहला एलिमेंट';\n$myArray[] = 'दूसरा एलिमेंट';\nprint_r($myArray);\n?>
\n\n

यह कोड आउटपुट देगा:

\n\n
Array\n(\n    [0] => पहला एलिमेंट\n    [1] => दूसरा एलिमेंट\n)
\n\n

काम करता है? हाँ। लेकिन क्यों? आइए समझते हैं कि [] ऑपरेटर वास्तव में क्या करता है।

\n\n

ऑपरेटर $arr[] = $value: तेज़ और सुंदर

\n\n

जब आप $arr[] = $value लिखते हैं, PHP कोई फंक्शन कॉल नहीं करता। इसके बजाय, यह सीधे ऐरे की आंतरिक डेटा संरचना (Zend Engine में zend_array) तक पहुंचता है।

\n\n

अंदर क्या होता है:

\n
    \n
  • PHP जांचता है कि ऐरे मौजूद है या नहीं। अगर नहीं है, तो नया बनाता है (लेकिन बेहतर है कि इसे स्पष्ट रूप से इनिशियलाइज़ करें: $arr = [])।
  • \n
  • एलिमेंट को ऐरे के अंत में जोड़ता है, और स्वचालित रूप से अगली संख्यात्मक कुंजी (0, 1, 2...) असाइन करता है।
  • \n
  • अगर ऐरे खाली था — पहले एलिमेंट को कुंजी 0 मिलती है।
  • \n
  • फंक्शन कॉल का कोई अतिरिक्त खर्च नहीं। यह सबसे परफॉरमेंट तरीका है।
  • \n
\n\n

सलाह: $arr[] = ... का उपयोग हमेशा करें जब आपको सिर्फ एक एलिमेंट को अंत में जोड़ना हो। यह तेज़, पढ़ने में आसान है, और किसी फंक्शन को इम्पोर्ट करने की ज़रूरत नहीं है।

\n\n

array_push(): जब एक साथ कई एलिमेंट जोड़ने हों

\n\n

दूसरा लोकप्रिय तरीका है array_push() फंक्शन:

\n\n
<?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
\n\n

कब उपयोग करें: केवल जब आपको एक साथ कई एलिमेंट (2 या अधिक) जोड़ने हों। एक एलिमेंट के लिए — array_push को भूल जाएं, [] का उपयोग करें।

\n\n

खाली ऐरे और कुंजियाँ: क्या होगा अगर कुंजियाँ संख्यात्मक न हों?

\n\n

अगर आप किसी विशिष्ट कुंजी के साथ एलिमेंट जोड़ना चाहते हैं तो क्या करें? उदाहरण के लिए, एक एसोसिएटिव ऐरे:

\n\n
<?php\n$user = [];\n$user['name'] = 'राहुल';\n$user['age'] = 30;\n?>
\n\n

यहाँ भी सब कुछ सरल है। वर्गाकार कोष्ठक के अंदर कुंजी के साथ [] ऑपरेटर ($arr['key'] = value) असाइनमेंट की तरह काम करता है। अगर कुंजी मौजूद नहीं है — तो वह बन जाती है। अगर मौजूद है — तो ओवरराइट हो जाती है।

\n\n

लेकिन सावधान रहें: अगर आप गलती से एसोसिएटिव ऐरे के पास $user[] = 'मान' लिख देते हैं, तो PHP एक संख्यात्मक कुंजी जोड़ देगा।

ब्लॉग

पुस्तक अनुशंसाएँ