php - Nasıl ben bu yasadışı ofset tip hatayı düzeltmek yok

4 Cevap php

Bu kod her yineleme için "yasadışı offset type" hatası alıyorum. Burada herkes yardımcı olabilir durumda kod:

$s = array();

for($i=0;$i<20;$i++){

    $source = $xml->entry[$i]->source;
    $s[$source] += 1;

}

print_r($s)

Herhangi bir fikir. Şimdiden teşekkürler.

4 Cevap

Eğer dizin anahtar olarak bir object veya array kullanarak bir dizi indeksi erişmeye çalıştığınızda Illegal offset type hataları oluşabilir.

Örnek:

$x = new stdClass();
$arr = array();
echo $arr[$x];
//illegal offset type

Sizin $xml dizisi $i bazı değeri için $xml->entry[$i]->source bir nesne ya da dizi içerir ve {[(3 için bir indeks anahtarı olarak kullanan çalıştığınızda )]}, bu uyarı alıyorum. Emin $xml için bunu istediğini içerir ve doğru erişiyor emin olmak gerekir.

Lütfen xml az 20 girişleri muhtemelen vardır.

bu kodu değiştirmek

for ($i=0;$i< sizeof($xml->entry); $i++)
...

$s[$source] önce trim($source) kullanın.

check $xml->entry[$i] exists and is an object before trying to get a property of it

 if(isset($xml->entry[$i]) && is_object($xml->entry[$i])){
   $source = $xml->entry[$i]->source;          
   $s[$source] += 1;
 }

ya $ kaynak ofset yasal bir dizi ama bir dizi, nesne, kaynak veya muhtemelen boş olmayabilir