I'm getting
illegal offset type
error for every iteration of this code. Here's the code :
$s = array();
for($i = 0; $i < 20; $i++){ $source = $xml->entry[$i]->source; $s[$source] += 1;
}
print_r($s) 1 5 Answers
Illegal offset type errors occur when you attempt to access an array index using an object or an array as the index key.
Example:
$x = new stdClass();
$arr = array();
echo $arr[$x];
//illegal offset typeYour $xml array contains an object or array at $xml->entry[$i]->source for some value of $i, and when you try to use that as an index key for $s, you get that warning. You'll have to make sure $xml contains what you want it to and that you're accessing it correctly.
Use trim($source) before $s[$source].
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; }or $source might not be a legal array offset but an array, object, resource or possibly null
1There are probably less than 20 entries in your xml.
change the code to this
for ($i=0;$i< sizeof($xml->entry); $i++)
... 1 I had a similar problem. As I got a Character from my XML child I had to convert it first to a String (or Integer, if you expect one). The following shows how I solved the problem.
foreach($xml->children() as $newInstr){ $iInstrument = new Instrument($newInstr['id'],$newInstr->Naam,$newInstr->Key); $arrInstruments->offsetSet((String)$iInstrument->getID(), $iInstrument); }