Foros del Web » Programando para Internet » PHP »

Undefined offset: 2

Estas en el tema de Undefined offset: 2 en el foro de PHP en Foros del Web. Hola a todos!!! Tengo el siguiente problema. Hago un while de un array (while($var[$i])) y me sale el siguiente error: Warning: Undefined offset: 2 Revisé ...
  #1 (permalink)  
Antiguo 15/01/2002, 21:20
 
Fecha de Ingreso: enero-2002
Ubicación: Buenos Aires
Mensajes: 62
Antigüedad: 22 años, 3 meses
Puntos: 1
Undefined offset: 2

Hola a todos!!!
Tengo el siguiente problema. Hago un while de un array (while($var[$i])) y me sale el siguiente error:
Warning: Undefined offset: 2

Revisé el array y está bien.

Gracias.
  #2 (permalink)  
Antiguo 16/01/2002, 08:51
Avatar de Webstudio
Colaborador
 
Fecha de Ingreso: noviembre-2001
Ubicación: 127.0.0.1
Mensajes: 3.499
Antigüedad: 22 años, 5 meses
Puntos: 69
Re: Undefined offset: 2

hchiesa, porque no nos muestras el script un poco mas completo para que te podamos ayudar?
Pueden ser muchas cosas las que pueden estar pasando, y si no vemos que es lo que estás haciendo, podemos estar tirando posibilidades todo el dia.

Saludos.

<hr><font size=2 face="verdana">- Pablo Daniel Rigazzi (Webstudio)
<font size=1 color="#333333">COORDINADOR PROYECTO REGIONALIZACION ARGENTINA
Visita <a href="http://www.web-studio.com.ar" target="_blank">Web Studio</a> - Tutoriales Photoshop</fo
  #3 (permalink)  
Antiguo 16/01/2002, 15:31
 
Fecha de Ingreso: enero-2002
Ubicación: Buenos Aires
Mensajes: 62
Antigüedad: 22 años, 3 meses
Puntos: 1
Re: Undefined offset: 2

Bueno, esto es basicamente mi script:

$correos=explode(&quot;|&quot;,$mails);
$i=0;
while($correos[$i]){
mail($correos, $asunto, $tema);
$i++;
}

Supongo que mi problema estará en el explode.
Lo que pasa es que como no pude enviar un array de un php a otro (si alguien conoce la forma de hacerlo se lo agradecería). Entonces lo que hice fue convertir la variable $mails -que era un array- en un string (con implode y &quot;|&quot; como separador), lo envie por medio de un formulario y despues la volvi a convertir en array con el explode y el &quot;|&quot;.
La consecuencia es como te decia el siguiente error:
Warning: Undefined offset: 2 (este error me aparece en la linea del while).

Gracias y saludos.
  #4 (permalink)  
Antiguo 16/01/2002, 18:35
 
Fecha de Ingreso: septiembre-2001
Ubicación: Monterrey
Mensajes: 663
Antigüedad: 22 años, 6 meses
Puntos: 6
Re: Undefined offset: 2

Una forma comoda de tratar tu problema es usando la funcion serialize de la siguiente forma:

<pre>

&lt;?
$strCorreos = serialize($mails);
$codCorreos = urlencode($strCorreos);
//
// Envias a travez de Form $codCorreos
//

?&gt;
</pre>

En el otro script solo necesitas desearializar la variable $codCorreos y usarla:
<pre>

&lt;?
$mails = unserialize($codCorreos);

foreach($mails as $send)
{
mail($send,$asunto,$tema);
}
?&gt;
</pre>

Saludos.
  #5 (permalink)  
Antiguo 17/01/2002, 09:01
Avatar de Webstudio
Colaborador
 
Fecha de Ingreso: noviembre-2001
Ubicación: 127.0.0.1
Mensajes: 3.499
Antigüedad: 22 años, 5 meses
Puntos: 69
Re: Undefined offset: 2

hchiesa, tu error está en la manera que recorres lso datos del correo... primero analicemos lo que estás haciendo y segundo, te presento una solución mejor:

1) tu script

$correos=explode(&quot;|&quot;,$mails);
$i=0;
while($correos[$i]){
mail($correos, $asunto, $tema);
$i++;
}

Supongamos que en $correos vienen 2 direcciones de email solas, no? Bueno, en el explode, conseguimos un array de 2 posiciones (0 y 1). Cuando entramos al While, la primera vez, $correos[0] existe, entonces mandamos el mail y sumamos 1 a $i. Volvemos al While y $correos[1] también existe, entonces tambien mandamos el mail. Volvemos a sumar 1 a $i y cuando intentas acceder a $correos[2], entonces salta error, porque no existe.
Ahi está el error.

2) Hay infinidad de maneras de recorrer un array y hacer cosas con cada elemento, te presento la que yo utilizo y más me gusta por ser un acercamiento a la programación orientada a objetos:

$correos=explode(&quot;|&quot;,$mails);
foreach ($correos as $mail)
{
mail($mail, $asunto, $tema);
}

Y listo, foreach recorre todos los elementos del array y le asigna el valor temporalmente a la variable $mail. Luego, dentro del bloque del foreach, con esa variable puedes hacer lo que quieras.

Saludos.

<hr><font size=2 face="verdana">- Pablo Daniel Rigazzi (Webstudio)
<font size=1 color="#333333">COORDINADOR PROYECTO REGIONALIZACION ARGENTINA
Visita <a href="http://www.web-studio.com.ar" target="_blank">Web Studio</a> - Tutoriales Photoshop</fo
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




La zona horaria es GMT -6. Ahora son las 16:53.