Foros del Web » Programando para Internet » PHP »

Array no lee claves 08 y 09

Estas en el tema de Array no lee claves 08 y 09 en el foro de PHP en Foros del Web. Hola! soy bastante nuevo en php, recién estoy aprendiendo... Resulta que tengo este código simplísimo: Código PHP: <?php $numero  =  $_GET [ "id" ]; $matriz  ...
  #1 (permalink)  
Antiguo 24/03/2008, 14:18
Avatar de okra  
Fecha de Ingreso: febrero-2008
Mensajes: 11
Antigüedad: 16 años, 2 meses
Puntos: 0
Array no lee claves 08 y 09

Hola! soy bastante nuevo en php, recién estoy aprendiendo...
Resulta que tengo este código simplísimo:

Código PHP:
<?php
$numero 
$_GET["id"];

$matriz = array(
    
01 => "valor 1",
    
02 => "valor 2",
    
03 => "valor 3",
    
04 => "valor 4",
    
05 => "valor 5",
    
06 => "valor 6",
    
07 => "valor 7",
    
08 => "valor 8",
    
09 => "valor 9",
    
10 => "valor 10",
    
11 => "valor 11",
    
12 => "valor 12"
    
)

?>
<html>
<body>

<?php echo "Matriz [".$numero."]: ".$matriz[intval($numero)]; ?>

</body>
</html>
Mi problema está en que no puedo leer los datos de la matriz sólo en los lugares 08 y 09... me resulta muy raro, porque todos los demás andan perfecto.

Pueden comprobarlo aquí: http://fernus.juooo.com.ar/prueba.php

Verán que si agregan "?id=7" por ejemplo, anda perfecto; pero "?id=8" ya no.

Desde ya, gracias!!! espero puedan ayudarme
  #2 (permalink)  
Antiguo 24/03/2008, 14:45
Avatar de qvixote  
Fecha de Ingreso: marzo-2008
Mensajes: 79
Antigüedad: 16 años, 1 mes
Puntos: 2
Re: Array no lee claves 08 y 09

Falta un punto y coma ( ; ) al final de la creación del array. Es el único problema que veo, pero no sé qué relevancia tenga esto en el comportamiento extraño que tiene tu script. Antes debería dar un error de sintaxis, ¿no?
  #3 (permalink)  
Antiguo 24/03/2008, 15:55
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Array no lee claves 08 y 09

Es un problema extraño. Si ponemos

Código PHP:
$matriz = array( 
    
08 => "valor 8"
    
09 => "valor 9"
); 
 
var_dump($matriz); 
Esto nos imprime:

Cita:
array(1) {
[0]=>
string(7) "valor 9"
}
Imagino que el servidor PHP intenta convertir a datos de tipo enteros (int) todos los índices, y tiene problemas conviertiendo los índices 08 y 09. Veamos:
Código PHP:
echo '<pre>';
 
var_dump(01); # int(1)
var_dump(02); # int(2)
var_dump(03); # int(3)
var_dump(04); # int(4)
var_dump(05); # int(5)
var_dump(06); # int(6)
var_dump(07); # int(7)
var_dump(08); # int(0) [?]
var_dump(09); # int(0) [?]
var_dump(10); # int(10)
var_dump(11); # int(11)
var_dump(12); # int(12)
var_dump(13); # int(13) 
Es muy raro, nunca ví nada así. Lo mejor es que uses índices estrictamente enteros, o en todo caso strings:

Código PHP:
$matriz = array( 
    
=> "valor 1"
    
=> "valor 2"
    
=> "valor 3"
    
=> "valor 4"
    
=> "valor 5"
    
=> "valor 6"
    
=> "valor 7"
    
=> "valor 8"
    
=> "valor 9"
    
10 => "valor 10"
    
11 => "valor 11"
    
12 => "valor 12" 
); 
Saludos,

Última edición por okram; 24/03/2008 a las 16:04
  #4 (permalink)  
Antiguo 24/03/2008, 17:50
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Array no lee claves 08 y 09

El problema es que los números que comienzan con 0 son considerados números octales, y los números octales van del 0 al 7, no hay un numero 08 en octal.

Saludos.
  #5 (permalink)  
Antiguo 24/03/2008, 17:57
Avatar de ElJavista
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: Lima Perú
Mensajes: 2.231
Antigüedad: 17 años, 1 mes
Puntos: 67
Re: Array no lee claves 08 y 09

Podrías resolviendo simplemente poniendo las claves del array con comillas simples.
  #6 (permalink)  
Antiguo 24/03/2008, 20:44
Avatar de okra  
Fecha de Ingreso: febrero-2008
Mensajes: 11
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: Array no lee claves 08 y 09

Gracias a todos!!! buenísimas sus ayudas, sobretodo okram, gatorV y el javista.
Con esto seguro lo puedo solucionar, y aprender un poco más de paso.. gracias una vez más.
  #7 (permalink)  
Antiguo 25/03/2008, 06:26
Avatar de mgusdl  
Fecha de Ingreso: abril-2007
Ubicación: Malaga, España
Mensajes: 190
Antigüedad: 17 años
Puntos: 5
Información Re: Array no lee claves 08 y 09

Pon la base a utilizar en la funcion intval y no te pasará eso
Código PHP:
$a intval($variable10); 
Como dice GatorV, el problema viene que 08 y 09 los interpreta como base octal y no decimal.

http://es2.php.net/manual/es/function.intval.php

Última edición por mgusdl; 25/03/2008 a las 06:31 Razón: porque yo lo valgo
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 06:20.