Ben alıyorum
geçersiz ofset türü
bu kodun her yinelemesi için hata. İşte kod:
$s = array();
for($i = 0; $i < 20; $i++){
$source = $xml->entry[$i]->source;
$s[$source] += 1;
}
print_r($s)
Yanıtlar:
Bir nesne veya dizi kullanarak bir dizi dizinine erişmeye çalıştığınızda, geçersiz uzaklık türü hataları oluşurDizin anahtarı olarak .
Misal:
$x = new stdClass();
$arr = array();
echo $arr[$x];
//illegal offset type
Kişisel $xmldizi de bir nesne ya da dizi içeren $xml->entry[$i]->sourcebazı değer $ive sizin için bir dizin anahtarı olarak o kullanmaya çalıştığınızda $s, o uyarıyı olsun. İstediğinizi $xmliçerdiğinden ve doğru şekilde eriştiğinizden emin olmalısınız.
$xmlXML ayrıştırıcı çeşit kullanarak değişkeni? simple_xml veya DOMDocument? Bu durumda, kaynak düğümün aslında bir tür dom öğesi nesnesi olması muhtemeldir.
$xml->entry[$i]->source->div. HTML'yi bir DOM yapısına ayrıştırmak istiyorsanız, HTML'yi SimpleXML'den çok daha iyi işleyen DomDocumentbir loadHTML()işleve sahiptir. Check out php.net/manual/en/domdocument.loadhtml.php
Daha trim($source)önce kullanın $s[$source].
(string)$source) ve sonuçlar tamamen __toString () uygulamasına bağlıdır . Bir SimpleXMLnesneniz varsa işe yarar (görünüşte herkes tarafından varsayılmış ancak soruda asla gerçekten belirtilmemiş bir şey).
$ xml-> entry [$ i] var ve onun bir özelliğini almaya çalışmadan önce bir nesne olduğunu kontrol edin
if(isset($xml->entry[$i]) && is_object($xml->entry[$i])){
$source = $xml->entry[$i]->source;
$s[$source] += 1;
}
veya $ source, geçerli bir dizi uzaklığı olmayabilir, ancak bir dizi, nesne, kaynak veya muhtemelen boş olabilir
Xml'nizde muhtemelen 20'den az girdi vardır.
kodu buna değiştir
for ($i=0;$i< sizeof($xml->entry); $i++)
...
Benzer bir problemim vardı. XML çocuğumdan bir Karakter aldığımda, önce onu bir String'e (veya eğer bekliyorsanız, Tamsayıya) dönüştürmek zorunda kaldım. Aşağıda sorunu nasıl çözdüğüm gösterilmektedir.
foreach($xml->children() as $newInstr){
$iInstrument = new Instrument($newInstr['id'],$newInstr->Naam,$newInstr->Key);
$arrInstruments->offsetSet((String)$iInstrument->getID(), $iInstrument);
}
$sourcebir örneği olduğunu varsayarSimpleXMLve yalnızca o belirli durum için geçerli olan bilgileri sağlar. Sonunda durum böyle olsa da, soru bunu belirtmedi ve buraya referans için gelen her kimse bunu hesaba katmalı.