php – Wie behebe ich diesen illegalen Offset Typ Fehler

Ich erhalte für jede Iteration dieses Codes den Fehler “ungültiger Offset-Typ”. Hier ist der Code für den Fall, dass jemand helfen kann:

$s = array(); for($i = 0; $i entry[$i]->source; $s[$source] += 1; } print_r($s) 

Irgendwelche Ideen. Danke im Voraus.

Illegale Offset- Fehler treten auf, wenn Sie versuchen, auf einen Array-Index mit einem Objekt oder einem Array als Indexschlüssel zuzugreifen.

Beispiel:

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

Ihr $xml Array enthält ein Objekt oder Array unter $xml->entry[$i]->source für einen Wert von $i , und wenn Sie versuchen, das als Indexschlüssel für $s , erhalten Sie diese Warnung. Sie müssen sicherstellen, dass $xml enthält, was Sie wollen und dass Sie richtig darauf zugreifen.

Verwenden Sie trim($source) vor $s[$source] .

check $ xml-> entry [$ i] existiert und ist ein Objekt, bevor man versucht, eine Eigenschaft davon zu bekommen

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

oder $ source ist möglicherweise kein zulässiger Array-Offset, sondern ein Array, ein Objekt, eine Ressource oder möglicherweise null

Es gibt wahrscheinlich weniger als 20 Einträge in Ihrem XML.

Ändere den Code auf diesen

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

Ich hatte ein ähnliches Problem. Als ich ein Zeichen von meinem XML-Kind bekam, musste ich es zuerst in einen String umwandeln (oder Integer, wenn Sie einen erwarten). Das Folgende zeigt, wie ich das Problem getriggers habe.

 foreach($xml->children() as $newInstr){ $iInstrument = new Instrument($newInstr['id'],$newInstr->Naam,$newInstr->Key); $arrInstruments->offsetSet((String)$iInstrument->getID(), $iInstrument); }