Je suis en train
type de décalage illégal
erreur pour chaque itération de ce code. Voici le code:
$s = array();
for($i = 0; $i < 20; $i++){
$source = $xml->entry[$i]->source;
$s[$source] += 1;
}
print_r($s)
Des erreurs de type de décalage illégales se produisent lorsque vous essayez d'accéder à un index de tableau à l'aide d'un objet ou d'un tableau en tant que clé d'index.
Exemple:
$x = new stdClass();
$arr = array();
echo $arr[$x];
//illegal offset type
Votre tableau $xml
contient un objet ou un tableau à $xml->entry[$i]->source
pour une valeur de $i
. Lorsque vous essayez de l'utiliser comme clé d'index pour $s
, vous recevez cet avertissement. Vous devrez vous assurer que $xml
contient ce que vous voulez et que vous y accédez correctement.
Utilisez trim($source)
avant $s[$source]
.
check $ xml-> entry [$ i] existe et est un objet avant d'essayer d'en obtenir une propriété
if(isset($xml->entry[$i]) && is_object($xml->entry[$i])){
$source = $xml->entry[$i]->source;
$s[$source] += 1;
}
ou $ source peut ne pas être un offset de tableau légal mais un tableau, un objet, une ressource ou éventuellement nul
J'avais un problème similaire. Comme j'avais un personnage de mon enfant XML, je devais d'abord le convertir en chaîne (ou en entier, si vous en attendez une). Ce qui suit montre comment j'ai résolu le problème.
foreach($xml->children() as $newInstr){
$iInstrument = new Instrument($newInstr['id'],$newInstr->Naam,$newInstr->Key);
$arrInstruments->offsetSet((String)$iInstrument->getID(), $iInstrument);
}
Il y a probablement moins de 20 entrées dans votre XML.
changer le code pour cela
for ($i=0;$i< sizeof($xml->entry); $i++)
...