मैं ला रहा हूँ
अवैध ऑफसेट प्रकार
इस कोड के हर पुनरावृत्ति के लिए त्रुटि। यहाँ कोड है:
$s = array();
for($i = 0; $i < 20; $i++){
$source = $xml->entry[$i]->source;
$s[$source] += 1;
}
print_r($s)
जवाबों:
जब आप किसी ऑब्जेक्ट या किसी इंडेक्स कुंजी के रूप में एरे का उपयोग करके किसी इंडेक्स इंडेक्स तक पहुँचने का प्रयास करते हैं, तो अवैध ऑफ़सेट प्रकार की त्रुटियाँ उत्पन्न होती हैं ।
उदाहरण:
$x = new stdClass();
$arr = array();
echo $arr[$x];
//illegal offset type
आपके $xmlसरणी में $xml->entry[$i]->sourceकुछ मान के लिए एक ऑब्जेक्ट या सरणी होती है $i, और जब आप उस के लिए एक इंडेक्स कुंजी के रूप में उपयोग करने का प्रयास करते हैं $s, तो आपको वह चेतावनी मिलती है। आपको यह सुनिश्चित $xmlकरना होगा कि आप इसमें क्या चाहते हैं और आप इसे सही तरीके से एक्सेस कर रहे हैं।
$xmlकिसी तरह के XML पार्सर का उपयोग करके वैरिएबल बनाया है ? simple_xml या DOMDocument? उस स्थिति में, यह संभावना है कि स्रोत नोड वास्तव में किसी प्रकार का डोम तत्व है।
$xml->entry[$i]->source->div। यदि आप HTML को DOM संरचना में पार्स करना चाहते हैं, तो DomDocumentएक loadHTML()फ़ंक्शन है जो HTML को SimpleXML से बेहतर तरीके से संभालता है। की जाँच करें php.net/manual/en/domdocument.loadhtml.php
trim($source)पहले का उपयोग करें $s[$source]।
(string)$source) और परिणाम पूरी तरह से इसके __toString () कार्यान्वयन पर निर्भर करता है। यह काम करता है यदि आपके पास कोई SimpleXMLवस्तु है (स्पष्ट रूप से हर किसी के द्वारा ग्रहण की गई है, लेकिन वास्तव में प्रश्न में कभी नहीं कहा गया है)।
$ xml-> प्रविष्टि [$ i] मौजूद है और इसकी एक संपत्ति प्राप्त करने की कोशिश करने से पहले एक वस्तु है
if(isset($xml->entry[$i]) && is_object($xml->entry[$i])){
$source = $xml->entry[$i]->source;
$s[$source] += 1;
}
या $ स्रोत एक कानूनी सरणी ऑफसेट नहीं हो सकता है, लेकिन एक सरणी, वस्तु, संसाधन या संभवतः रिक्त हो सकता है
आपके xml में संभवतः 20 से कम प्रविष्टियाँ हैं।
इसमें कोड बदलें
for ($i=0;$i< sizeof($xml->entry); $i++)
...
मुझे भी ऐसी ही समस्या का समाधान करना पड़ा था। जैसा कि मुझे अपने XML बच्चे से एक वर्ण मिला है, मुझे इसे पहले एक स्ट्रिंग (या पूर्णांक में बदलना होगा, यदि आप एक की उम्मीद करते हैं)। निम्नलिखित दिखाता है कि मैंने समस्या को कैसे हल किया।
foreach($xml->children() as $newInstr){
$iInstrument = new Instrument($newInstr['id'],$newInstr->Naam,$newInstr->Key);
$arrInstruments->offsetSet((String)$iInstrument->getID(), $iInstrument);
}
$sourceयह एक उदाहरण हैSimpleXMLऔर जानकारी प्रदान करता है जो केवल उस विशिष्ट स्थिति पर लागू होती है। हालांकि यह अंततः मामला था, सवाल यह नहीं बताता था और जो कोई भी यहां संदर्भ के लिए आता है, उसे इसे ध्यान में रखना चाहिए।