Foros del Web » Programando para Internet » PHP »

Undefined offset

Estas en el tema de Undefined offset en el foro de PHP en Foros del Web. Hola tengo la siguiente código: Código PHP: <?php function  js_encode ( $s ){       $texto = '' ;       $s  =  strtoupper ( $s ); ...
  #1 (permalink)  
Antiguo 31/12/2008, 05:09
Avatar de mdk
mdk
 
Fecha de Ingreso: noviembre-2002
Mensajes: 531
Antigüedad: 21 años, 5 meses
Puntos: 11
Undefined offset

Hola tengo la siguiente código:

Código PHP:
<?php
function js_encode($s){ 
    
$texto=''
    
$s strtoupper($s);
    
$lon=strlen($s); 
    for(
$i=0;$i<$lon;++$i){ 
        
$num=ord($s[$i]); 
        if(
$num<16$texto.='\x0'.dechex($num); 
        else 
$texto.='\x'.dechex($num); 
    } 
    return 
$texto
}  
$intro "\n";
$top=0;
$OpenFile fopen ("data1.dat","r");
$CFile fread($OpenFile3000000);
fclose($OpenFile);

$boton explode($intro$CFile); 
$cantidad count($boton);
for(
$n=0$n<=$cantidad$n++) { $pase[$n+1] = js_encode($boton[$n]); }
for(
$n=1$n<=$cantidad$n++) {
    
$top=$top+1;
    
$but="btt".$n;
    if (
$but=="btt1") {
                       
contenido
                
}
}
La página en el servidor de mi ordenador no me da ningun error, pero cuando lo subo al servidor donde tiene que ir alojada me da el siguiente error.

Notice: Undefined offset: 6 in /data/list1.php on line 22

alguien sabe como puedo solucionarlo? creo que tiene que ver con los arrays, pero no estoy seguro.
Gracias
__________________
SoY Lo Ke VeS iNKLuSo KuAnDo No Me VeS ;)

Última edición por mdk; 31/12/2008 a las 05:49
  #2 (permalink)  
Antiguo 31/12/2008, 06:49
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Respuesta: Undefined offset

Prueba tu script en tu servidor pero despues de <?php escribe error_reporting(E_ALL);:
Código php:
Ver original
  1. <?php
  2. //TODO TU CODIGO DE ACA EN ADELANTE

Si ahora ves el mismo error y el resultado es el que buscas, significa que el php solo te esta notificando que una vez recorrido el arreglo, al llegar al ciclo 6 (vuelta 7 si cuentas el 0), hay un indice que no esta definido en el arreglo, y seria todo.

Para evitar el error tienes 2 opciones:

-agregale 1 a la variable cantidad del segundo for ya que parte de 1 y termina en la misma cantidad que el de arriba que parte en 0.
-en vez de poner error_reporting(E_ALL); pon error_reporting(0); (lo unico que haces con esto es evitar la notificacion de errores)

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #3 (permalink)  
Antiguo 31/12/2008, 13:08
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Undefined offset

cuando haces.... $n + 1 estas cometiendo un error...

si te encuentras en el ultimo elemento, entonces... el índice siguiente ( + 1 ) no existe...¿ cierto??

para evitar errores de ese tipo usa siempre isset

Código PHP:
$foo = isset($bar)? $barnull
incluso, te da la ventaja de asignar un valor por defecto... si no existe tal valor inicial...

espero comprendas... suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 01/01/2009, 13:09
Avatar de mdk
mdk
 
Fecha de Ingreso: noviembre-2002
Mensajes: 531
Antigüedad: 21 años, 5 meses
Puntos: 11
Respuesta: Undefined offset

Ya solucione el problema, cambiando el

for($n=0; $n<=$cantidad; $n++) { $pase[$n+1] = js_encode($boton[$n]); }

por

for($n=0; $n<$cantidad; $n++) { $pase[$n+1] = js_encode($boton[$n]); }

era una chorrada y la pagina funcionaba correctamente aunque saliera el error.

No obstante, me gustaria que me explicaras un poco mejor lo del isset que no lo tengo claro y eso que he mirado en varias paginas pero no llego a comprender su funcionamiento.
__________________
SoY Lo Ke VeS iNKLuSo KuAnDo No Me VeS ;)
  #5 (permalink)  
Antiguo 01/01/2009, 15:49
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Undefined offset

no es gran ciencia... tan solo isset hace la pregunta...

Código:
IF (ESTA_SETEADA($variable))
y en base a eso, resuelves lo demás con lógica... ¿porque no le hechas un vistosa al manual??

http://php.net/isset
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 03/01/2009, 18:36
Avatar de mdk
mdk
 
Fecha de Ingreso: noviembre-2002
Mensajes: 531
Antigüedad: 21 años, 5 meses
Puntos: 11
Respuesta: Undefined offset

m... no lo tengo del todo muy claro como asignar un valor con el isset, bueno en realidad no comprendo esto

$foo = isset($bar)? $bar: null;

que significa, que si $bar existe le asigne valor nulo?
__________________
SoY Lo Ke VeS iNKLuSo KuAnDo No Me VeS ;)
  #7 (permalink)  
Antiguo 03/01/2009, 18:47
Avatar de Bellenger  
Fecha de Ingreso: noviembre-2004
Ubicación: En un lugar del Mundo...
Mensajes: 599
Antigüedad: 19 años, 5 meses
Puntos: 4
Respuesta: Undefined offset

Holas, bueno el isset verifica que una variable exista o este seteada como tambien se le conoce, este te devuelve 1, cuando la variable existe, y nada cuando esta no existe, ahora en el ejemplo que te dan tambien usan el operador ternadio que es basicamente un if.. else..., pero en miniatura, algo asi:
Código PHP:
if($dad>18){
 echo 
'VOTAR';
}else{
 echo 
'NO VOTAR';

Esto facilmente se realizaria con el operador ternario asi:
Código PHP:
echo $edad>18?'VOTAR':'NO VOTAR'
Como te daras cuenta es muy sencillo, solo que en el ejemplo que te dan, se aplica el isset tambien, algo asi:
Código PHP:
$foo = isset($bar)? $barnull
Lo que se traduce a if.. else...
Código PHP:
if(isset($bar)){
 
$foo=$bar;
}else{
 
$foo=null;

Lo que sique despues del ?, se considera cuando la expresion verdadera, y lo que sigue despues de :, cuando es falsa la expresion evaluada
No es nada dificil, espero haberte aclarado el panorama, saludos...
__________________
Un Caballero Jura Lealtad. Usa su espada para suprimir la Injusticia No Conoce el Odio y Tampoco el AMOR...
  #8 (permalink)  
Antiguo 04/01/2009, 13:52
Avatar de mdk
mdk
 
Fecha de Ingreso: noviembre-2002
Mensajes: 531
Antigüedad: 21 años, 5 meses
Puntos: 11
Respuesta: Undefined offset

Totalmente, gracias ^^
__________________
SoY Lo Ke VeS iNKLuSo KuAnDo No Me VeS ;)
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 11:15.