समस्या पैदा होती है जब castingarray
को कोई चीज स्ट्रिंग कुंजी मान्य पूर्णांक हैं है।
आप इस वस्तु है, तो:
object(stdClass)#1 (2) {
["207"]=>
string(3) "sdf"
["210"]=>
string(3) "sdf"
}
और आप
$array = (array)$object
के साथ डाली तो आप इस सरणी
array(2) {
["207"]=>
string(3) "sdf"
["210"]=>
string(3) "sdf"
}
जो कुंजी है कि केवल पाशन द्वारा पहुँचा जा सकता है मिल उनके माध्यम से, $array["207"]
जैसी सीधी पहुंच हमेशाहोगीसे $array[207]
, जो मौजूद नहीं है।
जब से तुम json_decode()
से ऊपर की तरह
$json = '{"207":"sdf", "210":"sdf"}'
सबसे अच्छा समाधान पहली जगह में संख्यात्मक कुंजियों से बचने के लिए होगा एक स्ट्रिंग के लिए लागू की तरह एक वस्तु हो रही है। ये शायद ऑब्जेक्ट की श्रृंखला के संख्यात्मक गुण के रूप में बेहतर मॉडलिंग कर रहे हैं:
- बेहतर मूल डेटा को दर्शाता है, वस्तुओं का संग्रह के रूप में:
$json = '[{"numAttr":207, "strAttr":"sdf"}, {"numAttr":210, "strAttr":"sdf"}]'
इस डेटा संरचना वर्तमान से अधिक के कई फायदे हैं जो एक संख्यात्मक संपत्ति
- यह अन्य गुणों के साथ आसानी से एक्स्टेंसिबल है
- यह विभिन्न प्रणालियों भर में अधिक पोर्टेबल है (जैसा कि आप देख, अपने वर्तमान डेटा struc ट्यूर PHP में समस्याएं पैदा कर रहा है, लेकिन यदि आप किसी अन्य भाषा का उपयोग करना चाहते हैं तो आप आसानी से इसी तरह के मुद्दों का सामना कर सकते हैं)।
एक संपत्ति → वस्तु नक्शा आवश्यक है, इसे जल्दी प्राप्त किया जा सकता है, उदा, इस तरह:
function getNumAttr($obj) { return $obj->numAttr; } // for backward compatibility
$arr = json_decode($json); // where $json = '[{"numAttr":...
$map = array_combine(array_map('getNumAttr', $arr), $arr);
अन्य समाधान के रूप में ascii-चूने का सुझाव दिया करने के लिए होगा: वस्तुओं के बजाय उत्पादन साहचर्य सरणियों करने के लिए बल json_decode()
, true
करने के लिए अपने दूसरा पैरामीटर की स्थापना द्वारा:
$map = json_decode($json, true);
के लिए आपका इनपुट डेटा यह सीधे उत्पन्न करता है
array(2) {
[207]=>
string(3) "sdf"
[210]=>
string(3) "sdf"
}
ध्यान दें कि सरणी की कुंजी अब स्ट्रिंग के बजाय पूर्णांक हैं।
मैं जेएसओएन डेटा संरचना को एक बहुत साफ समाधान बदलने पर विचार करता हूं, हालांकि, हालांकि मैं समझता हूं कि ऐसा करना संभव नहीं है।
'var_dump (कुंजी ($ आउटपुट)) आज़माएं और हमें बताएं कि आपको क्या मिलता है। – deceze
अधिक जानकारी की आवश्यकता है। क्या संदर्भ? क्या यह सर्वर-साइड स्क्रिप्ट में है? –
@deceze: यह आउटपुट 'स्ट्रिंग '207' (लंबाई = 3)' –