Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/07/2011, 12:29
nucleorion
 
Fecha de Ingreso: junio-2011
Mensajes: 45
Antigüedad: 12 años, 10 meses
Puntos: 0
Array con explode y Notice: Undefined offset:

Tengo una funcion:
Código PHP:
function get_user($campo) {
        
$datos=false;
    
$ruta 'file/archivo.php';
    
$contenido file_get_contents($ruta);
    
$lineas explode('||'$contenido);
    foreach (
$lineas as $cada_linea) {
        
$campos explode('|'$cada_linea);
        
// Si coincide uno de los tres campos cargamos el array en $datos
        
if($campo == $campos[1] || $campo == $campos[2
        || 
$campo == $campos[3] || $campo == $campos[4])
        {
            
$datos['campo0']=$campos[0];
            
$datos['campo1']=$campos[1]; $datos['campo2']=$campos[2];
            
$datos['campo3']=$campos[3]; $datos['campo4']=$campos[4];
            
            break;
        }
    }
    return 
$datos;

La funcion devuelve un array con todos los campos de una linea cuando encuentra el campo enviado en cualquier posicion.

Aqui suponia que el array ya esta declarado antes del condicionante al asignarle valores con el explode, pero parece que no es asi ya que aunq funciona bien da este aviso al llamar a la funcion:

Cita:
Notice: Undefined offset: 1 in C:\blabla\blabla.php on line 37

Notice: Undefined offset: 1 in C:\blabla\blabla.php on line 41

Notice: Undefined offset: 2 in C:\blabla\blabla.php on line 41

Notice: Undefined offset: 3 in C:\blabla\blabla.php on line 42

Notice: Undefined offset: 4 in C:\blabla\blabla.php on line 42
La linea 37 es la del if y el error lo da el array $campos ya que si pongo ahi la @ no sale el error.

He probado con:
- settype($datos_del_usuario, "array");

y metiendo el if en otro if:

- if (is_array($datos_del_usuario))

Pero me sigue dando el aviso. He visto la documentacion del explode y parece estar correcto.

¿Que tengo mal?