variable nombre indice index error definido php arrays

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.