Foros del Web » Programando para Internet » PHP »

Algo tan elemental como acceder a un valor de un array me da problemas

Estas en el tema de Algo tan elemental como acceder a un valor de un array me da problemas en el foro de PHP en Foros del Web. Hace mucho que no programaba en PHP y me he encontrado con un error que mi cerebro dice que no debería ocurrir. Pero ocurre y ...
  #1 (permalink)  
Antiguo 11/07/2009, 16:30
 
Fecha de Ingreso: enero-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.047
Antigüedad: 21 años, 9 meses
Puntos: 10
Algo tan elemental como acceder a un valor de un array me da problemas

Hace mucho que no programaba en PHP y me he encontrado con un error que mi cerebro dice que no debería ocurrir. Pero ocurre y no he encontrado la forma de solucionarlo.
A ver si alguien me ilumina y me muestra lo mal que anda mi memoria phpera.

Tengo un form que envia un array bidimensional a otro php que lo procesa. Recorro el array con un foreach, pero cuando quiero acceder a los valores del array de segundo nivel siempre me devuelve un valor vacio.

Lo raro que que si dentro del foreach hago un print_r() del array de segundo nivel me muestra el array con sus valores correctamente. Pero si alli mismo quiero imprimir uno de esos valores no me imprime nada.

Por ejemplo, si hago esto:

Código PHP:
foreach($_POST['productos'] as $producto)
{
    
print_r($producto);
    echo 
$producto['nombre'];

el print_r() me devuelve esto:
Código PHP:
Array
(
    [
'nombre'] => coche
    
['precio'] => 200000
    
['id'] => 324

pero el echo no imprime nada!

He probado pasar los array a otras variables antes de recorrerlas ($prods = $_POST['productos'];) y no ha servidor de nada (como era de suponer).

Es correcta la forma en la que quiero acceder al valor? o ya estoy tan perdido que ni acceder al valor de un array se?? puede haber alguna variable de configuracion en mi servidor que este produciendo algun error o algo por el estilo?

Desde ya muchisimas gracias por su ayuda.
__________________
oohh... quisiera ser godines!!!
  #2 (permalink)  
Antiguo 11/07/2009, 16:40
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Algo tan elemental como acceder a un valor de un array me da problemas

Pues es muy raro, ya que la forma en que lo planteas es la correcta, prueba ejecutar un script simple para que veas donde esta el problema, algo así:
Código php:
Ver original
  1. $producto = array();
  2. $producto['nombre'] = 'algo';
  3. echo $producto['nombre'];

Saludos.
  #3 (permalink)  
Antiguo 11/07/2009, 16:49
 
Fecha de Ingreso: enero-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.047
Antigüedad: 21 años, 9 meses
Puntos: 10
Hola GatorV,

Si hago eso que me dices, como era de esperar, se imprime el valor "algo".
realmente no tengo idea que puede estar causando mi problema. Porque al entre medio del print_r() y el echo no pasa absolutamente nada. Por nada puede estar cambiando/borrando los valores del array.

Incluso si antes del foreach hago algo como:

Código PHP:
print_r($_POST['productos'][0]);
echo 
$_POST['productos'][0]['nombre']; 
pasa exactamente lo mismo. El print_r() me muestra el arrayc on los valores, pero echo (o print) no imprime nada.

Voy a probar subirlo a un server, por las dudas tenga algo raro en mi server local.

mmmm, me da la sensación que el problema es con algunos slashes al enviar los campos por POST.
En el form que envia los datos estoy llamando los campos asi:

<input type="text" name="productos[0]['m_80_20']" id="m_80_20" />

Puede ser que PHP este poniendo slashes antes de las comillas de ['m_80_20']? cuando hago el print_r() no aparece ningun slash, pero por ahi esta allí... podría ser algo así o ya estoy delirando?
__________________
oohh... quisiera ser godines!!!

Última edición por GatorV; 11/07/2009 a las 18:35
  #4 (permalink)  
Antiguo 11/07/2009, 17:25
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Algo tan elemental como acceder a un valor de un array me da problemas

yo creo que deliras...

ya que si acaso PHP agregara "slashes", es solo con los valores de las variables.... y eso depende de cierta configuración (php magic_quotes)

NO con el nombre de las variables, en este caso... el índice del arreglo...


has un var_dump() de todo el $_POST para comprobar la estructura, y analizarla...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 11/07/2009, 17:32
 
Fecha de Ingreso: enero-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.047
Antigüedad: 21 años, 9 meses
Puntos: 10
Respuesta: Algo tan elemental como acceder a un valor de un array me da problemas

suponia que deliraba (y eso que aún no empeze a beber).

esto es lo que devuelve el var_dump($_POST)

Código PHP:
array(2) {
  [
"productos"]=>
  array(
1) {
    [
0]=>
    array(
7) {
      [
"nombre"]=>
      
string(4"coche"
      
["'precio'"]=>
      
string(5"20000"
      
["'id'"]=>
      
string(1"1"
    
}
  }
  [
"acc"]=>
  
string(7"agregar"

Yo no veo nada raro, ustedes?
__________________
oohh... quisiera ser godines!!!
  #6 (permalink)  
Antiguo 11/07/2009, 17:36
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Algo tan elemental como acceder a un valor de un array me da problemas



Cita:
Iniciado por safe Ver Mensaje
[...] Yo no veo nada raro, ustedes?
yo, si....

Código PHP:
"'precio'" 
notas las comillas simples, en el nombre del índice???


claramente, has cometido el error de usar comillas al declarar el name="" como array(), ya que NO debes emplear comilla alguna, eso lo hace automáticamente PHP

Código HTML:
<input name="foo[0][bar]"/> 
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 11/07/2009, 18:27
 
Fecha de Ingreso: enero-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.047
Antigüedad: 21 años, 9 meses
Puntos: 10
Respuesta: Algo tan elemental como acceder a un valor de un array me da problemas

fantastico pateketrueke! era eso nomás. Sabía que tenía que ser un error asi de estupido. Mil gracias por tu ayuda.
__________________
oohh... quisiera ser godines!!!
  #8 (permalink)  
Antiguo 11/07/2009, 18:36
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Algo tan elemental como acceder a un valor de un array me da problemas

Aunque es muy raro que con nombre no te sirviera ya que viendo el var_dump de $_POST el indice de nombre no tiene comillas
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 12:59.