я собираюсь
недопустимый тип смещения
ошибка для каждой итерации этого кода. Вот код:
$s = array();
for($i = 0; $i < 20; $i++){
$source = $xml->entry[$i]->source;
$s[$source] += 1;
}
print_r($s)
я собираюсь
недопустимый тип смещения
ошибка для каждой итерации этого кода. Вот код:
$s = array();
for($i = 0; $i < 20; $i++){
$source = $xml->entry[$i]->source;
$s[$source] += 1;
}
print_r($s)
Ошибки неправильного смещения возникают при попытке получить доступ к индексу массива с помощью объекта или массива в качестве ключевого слова.
Пример:
$x = new stdClass();
$arr = array();
echo $arr[$x];
//illegal offset type
Ваш массив $xml
содержит объект или массив в $xml->entry[$i]->source
для некоторого значения $i
, а когда вы пытаетесь использовать его как индексный ключ для $s
, вы получите это предупреждение. Вы должны убедиться, что $xml
содержит то, что вы хотите, и что вы правильно обращаетесь к нему.
Используйте trim($source)
до $s[$source]
.
check $xml- > entry [$ i] существует и является объектом перед попыткой получить его свойство
if(isset($xml->entry[$i]) && is_object($xml->entry[$i])){
$source = $xml->entry[$i]->source;
$s[$source] += 1;
}
или $source может быть не смещение законного массива, а массив, объект, ресурс или возможно null
В вашем xml файле может быть меньше 20 записей.
измените код на этот
for ($i=0;$i< sizeof($xml->entry); $i++)
...
У меня была аналогичная проблема. Поскольку у меня появился символ из моего XML файла, мне пришлось сначала преобразовать его в String (или Integer, если вы ожидаете его). Ниже показано, как я решил проблему.
foreach($xml->children() as $newInstr){
$iInstrument = new Instrument($newInstr['id'],$newInstr->Naam,$newInstr->Key);
$arrInstruments->offsetSet((String)$iInstrument->getID(), $iInstrument);
}