unset
के साथ एक संख्यात्मक सरणी कुंजी को हटाने के बाद मुझे json_encode
के साथ अजीब व्यवहार का सामना करना पड़ रहा है। निम्नलिखित कोड समस्या को स्पष्ट करना चाहिए। मैं इसे दोनों CLI से और के रूप में एक अपाचे आधुनिक हुई:PHP जेसन_नकोड PHP सरणी के बाद ऑब्जेक्ट के रूप में अनसेट()
PHP संस्करण जानकारी:
C:\Users\usr\Desktop>php -v
PHP 5.3.1 (cli) (built: Nov 20 2009 17:26:32)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2009 Zend Technologies
पीएचपी कोड
<?php
$a = array(
new stdclass,
new stdclass,
new stdclass
);
$a[0]->abc = '123';
$a[1]->jkl = '234';
$a[2]->nmo = '567';
printf("%s\n", json_encode($a));
unset($a[1]);
printf("%s\n", json_encode($a));
कार्यक्रम आउटपुट
C:\Users\usr\Desktop>php test.php
[{"abc":"123"},{"jkl":"234"},{"nmo":"567"}]
{"0":{"abc":"123"},"2":{"nmo":"567"}}
जैसा कि आप देख सकते हैं, पहली बार $a
को JSON में परिवर्तित किया गया है जो इसे जावास्क्रिप्ट सरणी के रूप में एन्कोड किया गया है। दूसरी बार (unset
कॉल के बाद) $a
जावास्क्रिप्ट ऑब्जेक्ट के रूप में एन्कोड किया गया है। यह क्यों है और मैं इसे कैसे रोक सकता हूं?
+1 क्योंकि एक अच्छी तरह से पूछे जाने वाले प्रश्न को देखना अच्छा होता है। :) – Spudley