payment by upi: sinhamit@icici or payment by bank account name: amit kumar sinha, account number: 2646728782 IFSC code: KKBK0005660 SWIFT: KKBKINBB

Please support if you like my work by payment through upi: sinhamit@icici or payment by bank

account name: Amit Kumar Sinha,
account number: 2646728782
IFSC code: KKBK0005660
SWIFT: KKBKINBB


Dealing with Individual Items of an Array   in Category: पीएचपी   by amit

🕙 Posted on 2023-05-17 at 05:59:30


एक ऐरे (array) के आइटम में बदलाव करना

    unset() (अंतर्निहित in-built/ पूर्व-परिभाषित pre-defined) फ़ंक्शन को जानें, जो न केवल एक चर (variable) या स्थिर (constant) नाम के निर्दिष्ट (assigned) मान को नष्ट कर देता है, बल्कि यह चर नाम या स्थिर नाम को भी नष्ट कर देता है। इसका अर्थ है कि अनुरोध-प्रतिक्रिया चक्र में वह चर या स्थिर कभी मौजूद नहीं रहा है। unset() फ़ंक्शन को सरणी (array) पर लागू करें।

(सफेद पृष्ठभूमि-रंग और काले पाठ-रंग में प्रदर्शित OUTPUT को कॉपी न करें!)

<?php
  $my_var = array( "hero", 'zero', true, 1, 2.5 );
  unset( $my_var[0] );           // केवल सरणी की पहली कुंजी को नष्ट करता है
  var_dump( $my_var );          // आउटपुट पहली कुंजी, 0 नहीं दिखाता है
  var_dump( $my_var[0] );    // आउटपुट ERROR प्रदर्शित करता है, क्योंकि कुंजी 0 मौजूद नहीं है
  unset( $my_var );                // संपूर्ण सरणी को नष्ट कर देता है
  var_dump( $my_var );         // आउटपुट ERROR प्रदर्शित करता है, क्योंकि संपूर्ण सरणी मौजूद नहीं है
  var_dump( $my_var[1] );    // आप किसी सरणी की किसी भी कुंजी से मान तक नहीं पहुंच सकते, जो मौजूद नहीं है
?>

    कोड की उपरोक्त पंक्तियों में, unset( $my_var[0] ) केवल पहली कुंजी को नष्ट कर देगा, या unset( $my_var[1] ) केवल दूसरी कुंजी को नष्ट कर देगा, इसी तरह... और भी। लेकिन unset( $my_var ) पूरे सरणी (array) को नष्ट कर देगा। निम्नलिखित आउटपुट में, आप देख सकते हैं कि कुंजी [0] उपरोक्त कोड की चौथी पंक्ति के आउटपुट से गायब है। उपरोक्त कोड की 5, 7 और 8 पंक्तियाँ निम्नलिखित आउटपुट (NULL) को दर्शाता है जब कुंजी 0 या चर नाम $my_var अपरिभाषित है। लाइन 8 दो चेतावनियों को आउटपुट करती है: (1) अपरिभाषित चर नाम, और (2) NULL से कुंजी तक पहुँचने का प्रयास करना।

array(4) { [1]=> string(4) "zero" [2]=> bool(true) [3]=> int(1) [4]=> float(2.5) }
Warning: Undefined array key 0 in C:\xampp\htdocs\php_project\phptest.php on line 5
NULL
Warning: Undefined variable $my_var in C:\xampp\htdocs\php_project\phptest.php on line 7
NULL
Warning: Undefined variable $my_var in C:\xampp\htdocs\php_project\phptest.php on line 8

Warning: Trying to access array offset on value of type null in C:\xampp\htdocs\php_project\phptest.php on line 8
NULL

    यद्यपि उपरोक्त उदाहरण यह समझाने के लिए है कि चर नाम या स्थिर नाम को नष्ट करने के लिए आपको अक्सर unset() फ़ंक्शन का उपयोग नहीं करना चाहिए। आप में से कुछ यह तर्क दे सकते हैं कि चर या स्थिर नाम पहले से ही परिभाषित हैं, और जब भी कोई वेब-ब्राउज़र को ताज़ा (refresh) करता है तो परिणाम प्राप्त किए जा सकते हैं। याद रखें कि PHP एक स्क्रिप्टिंग भाषा है, जो एक अनुरोध-प्रतिक्रिया चक्र के परिणाम को आउटपुट करती है । इसका मतलब यह है कि आप इस वेबसाइट या किसी अन्य वेब पेज को चाहे जितनी बार रिफ्रेश करें, एक नया अनुरोध-प्रतिक्रिया चक्र शुरू हो जाता है।

    इसलिए, उपरोक्त वर्णित त्रुटियों से बचने के लिए, किसी चर या निरंतर नाम को, या उसके मान (value) को नष्ट किए बिना, या आम तौर पर किसी सरणी (array) के अंदर किसी आइटम के मान को NULL या किसी अन्य मान के साथ बदलने की आवश्यकता होती है। आइए देखें कि उपरोक्त उदाहरण के साथ, यह (बिना unset() फ़ंक्शन के) कैसे किया जा सकता है:

<?php $my_var = array( "hero", 'zero', true, 1, 2.5 ); ?>

<?php echo $my_var[0]; // किसी सरणी से एक आइटम को प्राप्त करने के लिए ?><br />

<?php $my_var[0] = NULL; // किसी आइटम के मान को बदलने के लिए ?>

<?php $my_var[3] = false; // किसी आइटम के मान को बदलने के लिए ?>

<?php var_dump( $my_var ); ?><br />

hero
array(5) { [0]=> NULL [1]=> string(4) "zero" [2]=> bool(true) [3]=> bool(false) [4]=> float(2.5) }

    पिछले पेज में भी आपने देखा है कि किसी ऐरे के अलग-अलग आइटम से वैल्यू को कैसे प्राप्त किया जा सकता है (ऊपर उदाहरण देखें)। इसी तरह, आप डेटा को जोड़ने या बदलने के लिए, सरणी डेटा-प्रकार के चर या स्थिर नाम के ठीक बाद वर्ग कोष्ठक (खोलने और बंद करने) के भीतर, सूचकांक (index) संख्या (पूर्णांक) या अन्य डेटा-प्रकार की सूचकांक (index) कुंजी का उपयोग कर सकते हैं। PHP द्वारा समर्थित किसी भी डेटा-प्रकार का शाब्दिक मूल्य, या यहां तक ​​कि एक चर या स्थिरांक को एक सरणी के एक अलग आइटम को निर्दिष्ट कर सकते हैं। इस तरह आप NESTED array भी बना सकते हैं।

एक ऐरे में आइटम जोड़ना

    PHP एक ढीली डेटा-टाइप स्क्रिप्टिंग भाषा है। इसका अर्थ है कि एक चर नाम (या एक अनुरोध-प्रतिक्रिया चक्र में एक स्थिर नाम) किसी भी प्रकार का डेटा रख सकता है, और किसी भी समय, एक चर नाम के डेटा-प्रकार को दूसरे डेटा-प्रकार में बदला जा सकता है। आप उपयोगकर्ताओं (users) को विशिष्ट डेटा-प्रकार के डेटा इनपुट करने के लिए बाध्य कर सकते हैं, लेकिन जब इन डेटा का उपयोग CMS (सामग्री प्रबंधन प्रणाली) प्रोग्राम के अंदर किया जाता है, तो उन्हें दूसरे डेटा-प्रकारों में टाइप-कास्ट किया जा सकता है, या किसी अन्य मान में बदला जा सकता है।

    वेरिएबल (चर) नाम के ठीक बाद (ओपनिंग/खोलने और क्लोजिंग/ बंद करने) स्क्वायर ब्रैकेट्स (वर्ग कोष्ठक) का उपयोग करके, किसी भी डेटा-प्रकार के मूल्य को सरणी (array) में जोड़ना बहुत आसान है। विशिष्ट प्रकार की कुंजियों, उदाहरण के लिए, स्ट्रिंग कुंजियाँ, बूलियन कुंजियाँ, आदि को एक साहचर्य सरणी में जोड़ना भी सरल है। PHP में, अनुक्रमित (indexed) सरणी और साहचर्य (associative) सरणी के बीच कोई अंतर नहीं है, सिवाय उनकी कुंजियों के मूल्यों तक पहुँचने या बदलाव करने के। एक खाली सरणी (empty array) बनाते हैं। निम्नलिखित उदाहरण आपको वह सब कुछ समझा देंगे जिसका मैंने यहाँ ऊपर उल्लेख किया है।

<?php $new_var = array(); // एक खाली सरणी शाब्दिक को चर $new_var के लिए असाइन (निर्दिष्ट) किया गया है ?>

<?php $new_var[] = 'hello'; var_dump( $new_var ); ?><br />

array(1) { [0]=> string(5) "hello" }

<?php
  $new_var = []; /* खाली सरणी शाब्दिक को चर $new_var के लिए फिर से निर्दिष्ट गया है  
    एक चर नाम घोषित करना और इसे खाली सरणी शाब्दिक असाइन (निर्दिष्ट) करना आवश्यक नहीं है। लेकिन, जब वही चर नाम पहले से ही घोषित किया जाता है, तो आप किसी भी डेटा-प्रकार के मान को फिर से असाइन कर सकते हैं। */

  $new_var = true; echo $new_var; // अब, यह एक सरणी डेटा-प्रकार नहीं है।
  echo '<br />';
  $new_var = array(); /* महत्वपूर्ण: उपरोक्त पंक्ति स्केलर डेटा-प्रकार का चर $new_var बनाती है, और जब आप इस पंक्ति को नहीं लिखते हैं, या इस पंक्ति को टिप्पणी (comment) करते हैं, ERROR नीचे दिखाया जाएगा */
  $new_var[] = 3.14; print_r( $new_var );   echo '<br />';
  $new_var[] = 'Amit'; print_r( $new_var );
?><br />

1
Fatal error: Uncaught Error: Cannot use a scalar value as an array in C:\xampp\htdocs\php_project\phptest.php:7 Stack trace: #0 {main} thrown in C:\xampp\htdocs\php_project\phptest.php on line 7

Array ( [0] => 3.14 )
Array ( [0] => 3.14 [1] => Amit )

    उपरोक्त दो उदाहरणों से, यह आपके लिए स्पष्ट है कि (ओपनिंग/खोलने और क्लोजिंग/बंद करने) वर्ग कोष्ठक के अंदर किसी भी कुंजी के बिना, अर्थात खाली [] एक सरणी में एक नया आइटम जोड़ देगा। चर नाम के ठीक बाद ये वर्गाकार कोष्ठक, पिछले मान को नए मान से प्रतिस्थापित नहीं करेंगे। उपरोक्त OUTPUT में दूसरी पंक्ति से पता चलता है कि चर नाम, $new_var में अब दो आइटम हैं। अगले पृष्ठ में, आप विभिन्न पूर्व-निर्धारित फ़ंक्शनस (functions) को देखेंगे, जिनका विशेष रूप से सरणियों में (पहले से गठित कुंजियों के) शुरुआत में या अंत में आइटम सम्मिलित करने के लिए के लिए उपयोग किया जाता है।

<?php $new_var[] = $new_var; /* खाली सरणी शाब्दिक, या किसी भी स्केलर डेटा-प्रकार के मान को फिर से चर $new_var के लिए, असाइन किए बिना  
    इस उदाहरण में, चर $new_var का मान, यानी, सरणी शाब्दिक एक नई कुंजी को निर्दिष्ट किया गया है। */

  echo '<pre>';
  print_r( $new_var );
  echo '</pre>'; आउटपुट एक नेस्टेड ऐरे है ?>

<pre>Array
(
    [0] => 3.14
    [1] => Amit
    [2] => Array
        (
            [0] => 3.14
            [1] => Amit
        )

)</pre>

    $new_var का मान है पहले से ही RAM (अस्थायी मेमोरी) में है, और इसे CPU द्वारा संसाधित किया जाता है और एक चर नाम $new_var के अंदर एक नई कुंजी को निर्दिष्ट किया जाता है। आप उसी तरह नेस्टेड सरणी के अंदर (नेस्टेड) ​​​​आइटम को आसानी से प्राप्त कर सकते हैं, या बदलाव कर सकते हैं। आपको वेरिएबल नाम के बाद स्क्वायर ब्रैकेट्स के बगल में स्क्वायर ब्रैकेट्स का एक और (शुरुआती और समापन) सेट रखना होगा, और इसी तरह ...

<?php echo $new_var[2][0]; // नेस्टेड सरणी से पहला आइटम ?>

<?php echo $new_var[2][1]; // नेस्टेड सरणी से दूसरा आइटम ?>

<?php var_dump( $new_var[2] ); // आप echo फ़ंक्शन के साथ नेस्टेड सरणी तक नहीं पहुंच सकते ?>

एक साहचर्य सरणी बनाएँ

<?php $assoc_var = []; // अनुक्रमित सरणी या साहचर्य सरणी के बीच कोई अंतर नहीं है ?>

<?php $assoc_var[] = 'one'; // अनुक्रमित सरणी में नया आइटम जोड़ा गया ?>

<?php $assoc_var[] = 'two'; // अनुक्रमित सरणी में एक और आइटम जोड़ा गया ?>

<?php $assoc_var['a'] = 1; // सरणी में नया कुंजी और आइटम जोड़ा गया ?>

<?php $assoc_var['b'] = 2; // अब अनुक्रमित सरणी उपरोक्त कुंजियों और वस्तुओं का मिश्रण है ?>

<?php var_dump( $assoc_var ); // ?>

array(4) { [0]=> string(3) "one" [1]=> string(3) "two" ["a"]=> int(1) ["b"]=> int(2) }

    आप ऊपर दिए गए OUTPUT में देख सकते हैं कि $assoc_var के अंदर वस्तुओं के लिए विभिन्न कुंजियाँ हैं। ये कुंजियाँ 0, 1, 'a' और 'b' हैं। जब आप किसी सरणी में कोई नया आइटम जोड़ते समय कोई कुंजी प्रदान नहीं करते हैं, तो अगला सबसे बड़ा पूर्णांक मान स्वचालित रूप से कुंजी (इंडेक्स नंबर) के रूप में असाइन किया जाएगा।

<?php $assoc_var[] = 'three'; // इंडेक्सेड एरे में नया आइटम जोड़ा गया ?>

<?php $assoc_var[20] = 'four'; // इंडेक्स नंबर 20 में नया आइटम जोड़ा गया ?>

<?php $assoc_var[] = 'five'; // इंडेक्सेड एरे में नया आइटम जोड़ा गया ?>

<?php var_dump( $assoc_var ); ?>

array(7) { [0]=> string(3) "one" [1]=> string(3) "two" ["a"]=> int(1) ["b"]=> int(2) [2]=> string(5) "three" [20]=> string(4) "four" [21]=> string(4) "five" }

    आप ऊपर बताए गए तरीके से साहचर्य प्रकार के NESTED सरणियाँ स्ट्रिंग कुंजियों आदि के साथ भी बना सकते हैं।


Leave a Comment: