2011-01-30 8 views
10

मैं एक सरणी जो इसमैं PHP सरणी से 'json_encode() `कुंजी कैसे करूं?

Array ([0] => 1691864 [1] => 7944458 [2] => 9274078 [3] => 1062072 [4] => 8625335 [5] => 8255371 [6] => 5476104 [7] => 6145446 [8] => 7525604 [9] => 5947143) 

की तरह प्रिंट अगर मैं json_encode($thearray) मैं इस

[1691864,7944458,9274078,1062072,8625335,8255371,5476104,6145446,7525604,5947143] 

की तरह कुछ क्यों नाम इनकोडिंग नहीं है मिलता है (उदाहरण, 0, 1, 2, 3 आदि)? और मुझे जेसन कोड में इसे दिखाने के लिए कैसे करना चाहिए? पूर्ण कोड नीचे

$ie = 0; 
    while($ie 10) 
    { 
    $genid = rand(1000000,9999999); 
    $temp[$ie] = $genid ; 
    $ie++; 
    } 
    print_r($temp); 

    $temp_json = json_encode($temp); 
    print_r($temp_json); 

उत्तर

31

आपको लगता है कि json_encode मजबूर कर सकते हैं एक वस्तु यद्यपि आप JSON_FORCE_OBJECT विकल्प सेट करके संख्यात्मक कुंजी के साथ एक सरणी गुजर रहे हैं का उपयोग करता है:

{"0":1691864,"1":7944458,"2":9274078,"3":1062072,"4":8625335,"5":8255371,"6":5476104,"7":6145446,"8":7525604,"9":5947143} 

लेकिन आपको केवल यह करना चाहिए यदि कोई ऑब्जेक्ट वास्तव में आवश्यक है।

+1

इस पैरामीटर का उपयोग कर किसी भी गिरावट को 'JSON_FORCE_OBJECT' के बारे में नहीं पता था? वोट दिया ~ Ty –

0

है क्योंकि उन बस सरणी के सूचकांक हैं। यदि आप प्रत्येक तत्व को किसी प्रकार का नाम जोड़ना चाहते हैं तो आपको एक एसोसिएटिव सरणी का उपयोग करने की आवश्यकता है।

जब आप को डिकोड कि JSON सारणी हालांकि इसे वापस 0, 1, 2, 3 आदि

0

यह करने के लिए बाहर आ जाएगा व्यवहार परिभाषित किया गया है। आपके द्वारा दिखाया गया सरणी एक गैर-सहयोगी, सामान्य रूप से अनुक्रमित सरणी है। इसकी अनुक्रमणिका पूरी तरह से संख्यात्मक हैं।

आप PHP या जावास्क्रिप्ट में सरणी डिकोड हैं, तो आप सूचकांक का उपयोग कर तत्वों उपयोग करने में सक्षम हो जाएगा:

$temp_array = json_decode($temp_json); 

echo $temp_array[2]; // 9274078 
5

इस बजाय का उपयोग करें:

json_encode((object)$temp) 

यह वस्तु में सरणी धर्मान्तरित , जो JSON-encoded, कुंजी प्रदर्शित करेगा।

यदि आप डेटा का अनुक्रम संग्रहित कर रहे हैं, तो संख्या से दूसरे नंबर पर मैपिंग नहीं, आपको वास्तव में सरणी का उपयोग करना चाहिए।

json_encode($thearray, JSON_FORCE_OBJECT) 

तब दिए गए मान संख्यात्मक कुंजी के साथ एक JSON ऑब्जेक्ट होना होगा:

संबंधित मुद्दे