nombre - php-¿Cómo puedo solucionar este error de tipo de desplazamiento ilegal
undefined index action in (5)
Probablemente hay menos de 20 entradas en tu xml.
cambia el código a este
for ($i=0;$i< sizeof($xml->entry); $i++)
...
Recibo el error "tipo de compensación ilegal" para cada iteración de este código. Aquí está el código en caso de que alguien pueda ayudar:
$s = array();
for($i = 0; $i < 20; $i++){
$source = $xml->entry[$i]->source;
$s[$source] += 1;
}
print_r($s)
Algunas ideas. Gracias por adelantado.
Tuve un problema similar. Como obtuve un Carácter de mi hijo XML, tuve que convertirlo primero en una Cadena (o Entero, si esperas uno). A continuación se muestra cómo resolví el problema.
foreach($xml->children() as $newInstr){
$iInstrument = new Instrument($newInstr[''id''],$newInstr->Naam,$newInstr->Key);
$arrInstruments->offsetSet((String)$iInstrument->getID(), $iInstrument);
}
Use trim($source)
antes de $s[$source]
.
check $ xml-> entry [$ i] existe y es un objeto antes de intentar obtener una propiedad de él
if(isset($xml->entry[$i]) && is_object($xml->entry[$i])){
$source = $xml->entry[$i]->source;
$s[$source] += 1;
}
o $ source podría no ser un desplazamiento de matriz legal, sino una matriz, objeto, recurso o posiblemente nulo
Los errores de tipo de desplazamiento ilegales se producen cuando intenta acceder a un índice de matriz utilizando un objeto o una matriz como clave de índice.
Ejemplo:
$x = new stdClass();
$arr = array();
echo $arr[$x];
//illegal offset type
Su matriz $xml
contiene un objeto o matriz en $xml->entry[$i]->source
para un valor de $i
, y cuando intenta usar eso como una clave de índice para $s
, obtiene esa advertencia. Deberá asegurarse de que $xml
contenga lo que desea y de que esté accediendo a él correctamente.