Autor Tema: ( ! ) Notice: Undefined offset: 1 in php on line Call Stack CU00826B  (Leído 22419 veces)

duralai

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 35
    • Ver Perfil
Estoy leyendo este http://aprenderaprogramar.com/index.php?option=com_content&view=article&id=571:count-php-funcion-recorrer-arreglos-o-arrays-uni-o-multidimensionales-con-for-y-foreach-ejemplo-cu00826b&catid=70:tutorial-basico-programador-web-php-desde-cero&Itemid=193 articulo.

Y en una parte dice lo siguiente:

CONOCER COUNT

Ejecuta este código:
Código: [Seleccionar]
<?php //Ejemplo arrays aprenderaprogramar.com
$array[5] = "Uno";
$array[6] = "Dos";
$array[7] = "Tres";
$array[8] = "Cuatro";
$array[9] = "Cinco";
$array[10] = "Seis";
$array[11] = "Siete";
$array[12] = "Ocho";
echo 
'Elementos inicializados en el array: '.count($array).'<br/>';
for(
$i=0;$i<count($array);$i++) {
echo 
$array[$i].'...<br/>';
}
echo 
$array[15].'aaa<br/>';
echo 
count($otroArray[14][33]).' elementos<br/>';
?>


el resultado sera:

Elementos inicializados en el array: 8
...
...
...
...
...
Uno...
Dos...
Tres...
aaa
0 elementos
---------------------------------------------------------------------------------------------
Despues lo explica asi:

Analicemos lo que está ocurriendo. El array $array no tiene definidos cuáles son sus elementos de índice 0, 1, 2, 3 y 4. En cambio sí tiene definidos valores para sus elementos de índice 5, 6, 7, 8, 9, 10, 11 y 12. Hay 8 elementos con valores definidos pero sus índices no son 0, 1, 2, 3, 4, 5, 6, 7 como es lo habitual, sino que son 5, 6, 7, 8, 9, 10, 11 y 12.

Al ejecutar el for comenzando con un valor de la variable de control igual a cero, se ejecuta echo $array[0].’…<br/>’; Al no tener un valor asignado, $array[0] devuelve vacío y simplemente se muestran tres puntos por pantalla. Lo mismo ocurre con los índices 1, 2, 3, 4 y sólo es al llegar al índice cinco cuando se muestran valores por pantalla.
Sin embargo, sólo se mostrarán los elementos con índice 5 a 8 del array, quedando el resto de elementos sin ser mostrado.

Además comprobamos que podemos invocar a elementos del array por encima del índice máximo definido sin obtener error, y que incluso podemos invocar a un nombre de array que no hemos declarado ni utilizado, con cualquier índice, sin obtener error.
En este ejemplo podríamos mostrar todos los elementos del array realizando un “pequeño cambio”:

for($i=5;$i<count($array)+5;$i++)

Sin embargo esta solución no es satisfactoria porque no la podemos aplicar como solución para recorrer cualquier array.

A modo de resumen diremos lo siguiente:

count nos devuelve el número de elementos inicializados del array.

Si los índices del array no son secuencialmente 0, 1, 2, 3 , etc. el recorrido con un for tradicional puede resultar no satisfactorio, por lo que habremos de pensar en otras alternativas para recorrer el array. Hablaremos de esto más adelante.
--------------------------------------------------------------------------------------------

Bueno es caso es que ami no me funciona, o sea me da una serie de errores y no se si es por la version de PHP o que, a mi me muestra eso:

Elementos inicializados en el array: 8
( ! ) Notice: Undefined offset: 0 in C:\wamp\www\AAP26 P2.php on line 12
Call Stack
#   Time   Memory   Function   Location
1   0.0020   133320   {main}( )   ..\AAP26 P2.php:0
...
( ! ) Notice: Undefined offset: 1 in C:\wamp\www\AAP26 P2.php on line 12
Call Stack
#   Time   Memory   Function   Location
1   0.0020   133320   {main}( )   ..\AAP26 P2.php:0
...
( ! ) Notice: Undefined offset: 2 in C:\wamp\www\AAP26 P2.php on line 12
Call Stack
#   Time   Memory   Function   Location
1   0.0020   133320   {main}( )   ..\AAP26 P2.php:0
...
( ! ) Notice: Undefined offset: 3 in C:\wamp\www\AAP26 P2.php on line 12
Call Stack
#   Time   Memory   Function   Location
1   0.0020   133320   {main}( )   ..\AAP26 P2.php:0
...

( ! ) Notice: Undefined offset: 4 in C:\wamp\www\AAP26 P2.php on line 12
Call Stack
#   Time   Memory   Function   Location
1   0.0020   133320   {main}( )   ..\AAP26 P2.php:0
...
Uno...
Dos...
Tres...
( ! ) Notice: Undefined offset: 15 in C:\wamp\www\AAP26 P2.php on line 14
Call Stack
#   Time   Memory   Function   Location
1   0.0020   133320   {main}( )   ..\AAP26 P2.php:0
aaa
( ! ) Notice: Undefined variable: otroArray in C:\wamp\www\AAP26 P2.php on line 15
Call Stack
#   Time   Memory   Function   Location
1   0.0020   133320   {main}( )   ..\AAP26 P2.php:0
0 elementos

_____________________________________________________________________

Osea entiendo todo lo que explica el manual pero no se porque en una parte dice "Además comprobamos que podemos invocar a elementos del array por encima del índice máximo definido sin obtener error, y que incluso podemos invocar a un nombre de array que no hemos declarado ni utilizado, con cualquier índice, sin obtener error." si aca me salen una serie de errores, depende de la version o que?
« Última modificación: 01 de Julio 2015, 10:24 por Mario R. Rancel »

Mario R. Rancel

  • Administrador
  • Experto
  • ********
  • APR2.COM
  • Mensajes: 1978
    • Ver Perfil
Re:( ! ) Notice: Undefined offset: 1 in php on line Call Stack CU00826B
« Respuesta #1 en: 01 de Julio 2015, 10:24 »
Hola, el resultado que obtienes puede estar relacionado con la configuración de php. Posiblemente con el valor establecido para error_reporting en el fichero php.ini.

En mi caso, he probado a ejecutarlo sobre un servidor y he obtenido los resultados que se indican en el texto del curso. No me han aparecido mensajes de error.

Los mensajes de error, warnings, notices, etc. que obtengas con php pueden estar condicionados por la versión de php y por la configuración de php.

Dado que los aspectos de configuración son complejos y no son el objetivo del curso, te recomendaría que si entiendes bien la explicación no te entretengas en tratar de evitar esos mensajes, sino que por el contrario continues avanzando con el curso.

También pienso que te puede resultar útil trabajar sobre un servidor remoto (puede ser un servidor gratuito, como se explica en el propio curso), dado que son condiciones de trabajo más realistas (y más próximas a lo que va a ser la progración web real que el trabajar en local).

Saludos

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".