Aviso de PHP: Desplazamiento indefinido: 1 con array al leer datos
Estoy recibiendo este error de PHP:
PHP Notice: Undefined offset: 1
Este es el código PHP que lo arroja:
$file_handle = fopen($path."/Summary/data.txt","r"); //open text file
$data = array(); // create new array map
while (!feof($file_handle) ) {
$line_of_text = fgets($file_handle); // read in each line
$parts = array_map('trim', explode(':', $line_of_text, 2));
// separates line_of_text by ':' trim strings for extra space
$data[$parts[0]] = $parts[1];
// map the resulting parts into array
//$results('NAME_BEFORE_:') = VALUE_AFTER_:
}
¿Qué significa este error? ¿Qué causa este error?
60
3
Cambiar
a
o simplemente:
No todas las líneas de su archivo tienen dos puntos y, por lo tanto, explotar en ellas devuelve un array de tamaño 1.
Según php.net posibles valores de retorno de explode:
Cómo reproducir el error anterior en PHP:
¿Qué significa ese mensaje de error?
Significa que el compilador de php buscó la clave
1
y corrió el hash contra ella y no encontró ningún valor asociado a ella entonces dijoUndefined offset: 1
.**¿Cómo puedo hacer que ese error desaparezca?
Preguntar al array si la clave existe antes de devolver su valor así:
Si el array no contiene su clave, no pregunte por su valor. Aunque esta solución hace que tu programa tenga que trabajar dos veces para "comprobar si está ahí" y luego "ir a buscarla".
Solución alternativa que'es más rápida:
Si obtener una clave que falta es una circunstancia excepcional causada por un error, es más rápido simplemente obtener el valor (como en
echo $yarr[1];
), y atrapar ese error de desplazamiento y manejarlo así: https://stackoverflow.com/a/5373824/445131Esto es un "Aviso de PHP", por lo que en teoría podría ignorarlo. Cambie
php.ini
:A
Esto muestra todos los errores, excepto los avisos.