আমি পাচ্ছি
অবৈধ অফসেট টাইপ
এই কোডটির প্রতিটি পুনরাবৃত্তির জন্য ত্রুটি। কোডটি এখানে:
$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->entry[$i]->source->div। আপনি যদি কোনও ডিওএম কাঠামোর মধ্যে এইচটিএমএল বিশ্লেষণ করতে চান তবে DomDocumentএকটি loadHTML()ফাংশন রয়েছে যা এইচটিএমএলকে সিম্পলএক্সএমএল থেকে অনেক বেশি ভাল পরিচালনা করে। পরীক্ষা করে দেখুন 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;
}
বা $ উত্স আইনী অ্যারে অফসেট না হলেও একটি অ্যারে, অবজেক্ট, সংস্থান বা সম্ভবত নাল হতে পারে
আপনার এক্সএমএলে সম্ভবত 20 টিরও কম এন্ট্রি রয়েছে।
এই কোড পরিবর্তন করুন
for ($i=0;$i< sizeof($xml->entry); $i++)
...
আমারও একই সমস্যা ছিল। আমি যখন আমার এক্সএমএল সন্তানের কাছ থেকে একটি চরিত্র পেয়েছি তখন আমাকে প্রথমে একটি স্ট্রিংয়ে রূপান্তর করতে হয়েছিল (বা আপনি যদি এটির আশা করেন তবে পূর্ণসংখ্যার)। নিম্নলিখিতটি দেখায় যে আমি কীভাবে সমস্যার সমাধান করেছি।
foreach($xml->children() as $newInstr){
$iInstrument = new Instrument($newInstr['id'],$newInstr->Naam,$newInstr->Key);
$arrInstruments->offsetSet((String)$iInstrument->getID(), $iInstrument);
}
$sourceএটি একটি উদাহরণSimpleXMLএবং এমন তথ্য সরবরাহ করে যা কেবলমাত্র সেই নির্দিষ্ট পরিস্থিতির ক্ষেত্রে প্রযোজ্য। যদিও অবশেষে এটি ছিল, প্রশ্নটি এটি বর্ণিত হয়নি এবং যে কেউ এখানে রেফারেন্সের জন্য আসে তাকে এই বিষয়টি বিবেচনায় নেওয়া উচিত।