Foros del Web » Programando para Internet » PHP »

Ayuda con funcion Split

Estas en el tema de Ayuda con funcion Split en el foro de PHP en Foros del Web. Hola que tal. Tengo el siguiente codigo, que funciona bien, pèro tiene un error que no puedo detectar. Código PHP: $palabras = split ( " " ...
  #1 (permalink)  
Antiguo 24/07/2003, 08:59
 
Fecha de Ingreso: marzo-2002
Ubicación: Salta Capital - Actualmente estudiando en Córdoba
Mensajes: 430
Antigüedad: 22 años, 1 mes
Puntos: 0
Ayuda con funcion Split

Hola que tal.
Tengo el siguiente codigo, que funciona bien, pèro tiene un error que no puedo detectar.

Código PHP:
$palabras=split(" ","Esto es una prueba"); 
   for(
$r=0;$palabras[$r];$r++)
      echo 
$palabras[$r],"<br>"

En el browser me sale esto:


Esto
es
una
prueba

Notice: Undefined offset: 4 in D:\Documents and Settings\Administrador\Mis documentos\Paginas Web\Estudiophp\default.php on line 46



Es decir me funciona bien pero me sale lo de notice y no se que se debe. La linea 46 es la del for.
Desde ya muchas gracias y espero que alguien sepa contestarme.
Salu2.
__________________
Nada es imposible, con un poco de esfuerzo se logran las cosas.-
  #2 (permalink)  
Antiguo 24/07/2003, 09:45
Avatar de DINASEN  
Fecha de Ingreso: marzo-2003
Mensajes: 997
Antigüedad: 21 años, 1 mes
Puntos: 1
edita tu php.ini y busca esta linea - Show all errors debajo abra otra que tu la tendras asi error_reporting = E_ALL pues pon
error_reporting = E_ALL & ~E_NOTICE

guarda los cambios y reinicia tu servidor apache

Un Saludo
  #3 (permalink)  
Antiguo 24/07/2003, 09:59
 
Fecha de Ingreso: marzo-2002
Ubicación: Salta Capital - Actualmente estudiando en Córdoba
Mensajes: 430
Antigüedad: 22 años, 1 mes
Puntos: 0
Bien DINASEN, me funciono de pelos.
Pero me gustaria saber que significa ese error de notice: undefine offset:4

Desde ya muchias gracielas.

__________________
Nada es imposible, con un poco de esfuerzo se logran las cosas.-
  #4 (permalink)  
Antiguo 24/07/2003, 10:06
Avatar de DINASEN  
Fecha de Ingreso: marzo-2003
Mensajes: 997
Antigüedad: 21 años, 1 mes
Puntos: 1
los notices no tienen pro que ser errores asiq eu no te molestes ni en saber que paso...jejeje

Un Saludo
  #5 (permalink)  
Antiguo 24/07/2003, 10:14
Avatar de biblio  
Fecha de Ingreso: enero-2002
Ubicación: Urano
Mensajes: 577
Antigüedad: 22 años, 3 meses
Puntos: 0
Pueda ser que no te preocupe, según mi concepto al ver una de esas, es porque mi script no es lo más óptimo que digamos, entonces si me preocupa.

Saludos
  #6 (permalink)  
Antiguo 24/07/2003, 14:25
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Simplemente pasa que estas intentando leer un elemento del array que no existe. El array tiene 4 elementos (del 0 al 3) y en tu bucle intenta leer el 5 elemento (indice 5), que no existe.

Con lo que dice DINASEN solo eliminas el mensaje, el error sige hay. Si, es un error. Un error de concepto. Funciona porque PHP es amable y devuelve NULL siempre que se intenta acceder a una variable que no existe. Pero sigue siendo un error. Aunque en este caso pueda ser un error "a sabiendas", ya que sabes el comportamiento de PHP y te "aprovechas" de el. Cambiando la configuracion, taparas verdaderos errores como que te equivoques al teclear el nombre de una variable.

Aparte, tu codigo no es "optimo". Hay formas mejores de hacerlo, como con foreach o con count() para saber el numero de elementos. Pero si aun asi quieres "tapar" este error en concreto, en esta linea en concreto, porque sabes exactamente por que da el error y sabes que esta bien que de el "error", puedes taparlo con @ :
Código PHP:
 for($r=0;@$palabras[$r];$r++)

      echo 
$palabras[$r],"<br>"
En fin, <spam> puedes leer mas en el articulo que aparece en mi firma (que espero finalizar en Agosto)</spam>.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #7 (permalink)  
Antiguo 24/07/2003, 14:34
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 3 meses
Puntos: 5
Otra solución...

Código PHP:
$palabras=split(" ","Esto es una prueba"); 
   for(
$r=0;$r<count($palabras);$r++)
      echo 
$palabras[$r],"<br>"
Esto te evitaría la ultima vuelta [4], ya que solo haría el loop n-1 veces, que es el total de los registros en tu array contando desde cero...

__________________
Manoloweb
  #8 (permalink)  
Antiguo 25/07/2003, 00:03
Avatar de biblio  
Fecha de Ingreso: enero-2002
Ubicación: Urano
Mensajes: 577
Antigüedad: 22 años, 3 meses
Puntos: 0
Y recuerden que el indice del array en general comienza en 0.

Creo que yo tambien me hago un manolo tips. jejeje



Saludos
  #9 (permalink)  
Antiguo 25/07/2003, 00:54
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 3 meses
Puntos: 5
Je je

Pues no vale mucho la pena... ya que por estar metido en un web, debes recargarlo completamente, o borrar los archivos temporales para que cambie...

Sigo buscando soluciones...
__________________
Manoloweb
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 09:15.