Saya mendapatkan
jenis offset ilegal
kesalahan untuk setiap iterasi kode ini. Berikut kodenya:
$s = array();
for($i = 0; $i < 20; $i++){
$source = $xml->entry[$i]->source;
$s[$source] += 1;
}
print_r($s)
Jawaban:
Kesalahan tipe offset ilegal terjadi saat Anda mencoba mengakses indeks array menggunakan objek atau array sebagai kunci indeks.
Contoh:
$x = new stdClass();
$arr = array();
echo $arr[$x];
//illegal offset type
$xmlArray Anda berisi objek atau larik $xml->entry[$i]->sourceuntuk beberapa nilai $i, dan ketika Anda mencoba menggunakannya sebagai kunci indeks $s, Anda mendapatkan peringatan itu. Anda harus memastikan $xmlberisi apa yang Anda inginkan dan bahwa Anda mengaksesnya dengan benar.
$xmlvariabel menggunakan semacam pengurai XML? simple_xml atau DOMDocument? Dalam hal ini, kemungkinan besar node sumber sebenarnya adalah sejenis objek elemen dom.
$xml->entry[$i]->source->div. Jika Anda ingin mengurai HTML menjadi struktur DOM, DomDocumentmemiliki loadHTML()fungsi yang menangani HTML jauh lebih baik daripada SimpleXML. Lihat php.net/manual/en/domdocument.loadhtml.php
Gunakan trim($source)sebelumnya $s[$source].
(string)$source) dan hasilnya sepenuhnya bergantung pada implementasi __toString () -nya . Ini berfungsi jika Anda memiliki SimpleXMLobjek (sesuatu yang tampaknya diasumsikan oleh semua orang tetapi tidak pernah benar-benar dinyatakan dalam pertanyaan).
periksa $ xml-> entri [$ i] ada dan merupakan objek sebelum mencoba untuk mendapatkan propertinya
if(isset($xml->entry[$i]) && is_object($xml->entry[$i])){
$source = $xml->entry[$i]->source;
$s[$source] += 1;
}
atau $ source mungkin bukan offset array legal tetapi array, objek, resource, atau mungkin null
Mungkin ada kurang dari 20 entri dalam xml Anda.
ubah kodenya menjadi ini
for ($i=0;$i< sizeof($xml->entry); $i++)
...
Saya memiliki masalah serupa. Ketika saya mendapat Karakter dari anak XML saya, saya harus mengubahnya terlebih dahulu menjadi String (atau Integer, jika Anda mengharapkannya). Berikut ini menunjukkan bagaimana saya memecahkan masalah.
foreach($xml->children() as $newInstr){
$iInstrument = new Instrument($newInstr['id'],$newInstr->Naam,$newInstr->Key);
$arrInstruments->offsetSet((String)$iInstrument->getID(), $iInstrument);
}
$sourceadalah contohSimpleXMLdan memberikan informasi yang hanya berlaku untuk situasi tertentu itu. Sementara itu pada akhirnya masalahnya, pertanyaan itu tidak menyatakannya dan siapa pun yang datang ke sini untuk referensi harus mempertimbangkan hal ini.