Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Duda con list() y each()

Estas en el tema de Duda con list() y each() en el foro de PHP en Foros del Web. Hola amigos, mi pregunta es la siguiente. Porque en la siguiente instrucción: Código PHP: $elemento =  each ( $matriz ); list( $key ,  $value )=  ...
  #1 (permalink)  
Antiguo 05/05/2015, 15:20
 
Fecha de Ingreso: mayo-2015
Ubicación: España
Mensajes: 5
Antigüedad: 9 años, 6 meses
Puntos: 0
Exclamación Duda con list() y each()

Hola amigos,

mi pregunta es la siguiente. Porque en la siguiente instrucción:

Código PHP:
$elementoeach($matriz);

list(
$key$value)= $elemento
en la variable $key se guarda la clave y en $value el valor.

Puede parecer una pregunta tonta a priori, pero os explico detalladamente porque me surge la duda. Vamos por partes:

1) En la instrucción:

Código PHP:
$elementoeach($matriz); 
la función each() nos devuelve un vector 1x4 que guarda en $elemento.

2) Si imprimimos el vector $elemento usando un bucle foreach, su contenido sería el siguiente:

Código PHP:
$elemento[1]       // Valor
$elemento[‘value’// Valor
$elemento[0]       // Clave
$elemento[‘key’]   // Clave 
Además en la web siguiente, Ejemplo 1, me lo confirma:
http://php.net/manual/es/function.each.php

3) Entonces, al hacer la instrucción

Código PHP:
list($key$value)= $elemento
no sería lógico que se le asignara a $key un Valor y a $value otro Varlor (según el esquemilla del punto 2), puesto que el primer y segundo elemento de $elemento, son los valores.

A ver si alguien me puede sacar de la duda. Gracias !!!
  #2 (permalink)  
Antiguo 05/05/2015, 15:32
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: Duda con list() y each()

¿Duda?

Yo no entiendo la duda.

Cita:
no sería lógico que se le asignara a $key un Valor y a $value otro Varlor
No, eso sería "lógico" para ti pero quien diseño PHP lo hizo de otra manera.

Así que no entiendo cual es el problema, las cosas son así.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 05/05/2015, 15:59
 
Fecha de Ingreso: mayo-2015
Ubicación: España
Mensajes: 5
Antigüedad: 9 años, 6 meses
Puntos: 0
Respuesta: Duda con list() y each()

Lo de lógico me refiero por el funcionamiento de list(). Es decir, en el siguiente ejemplo:

Código PHP:
$info = array('café''marrón''cafeína');
list(
$drink$color) = $info
$drink almacena la primera ('cafe')
$color almacena la segunda (marrón)

Es decir, la primera variable de list(), almacena el primer elemento del array (salvo que hubiera puesto una coma, pero no es el caso).

De ahí mi pregunta anterior.
  #4 (permalink)  
Antiguo 05/05/2015, 16:05
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: Duda con list() y each()

Pues precisamente eso es lo que hace each(), genera un array especial, no es que sólo tome por arte de magia un elemento y ya.

Revisa bien cómo funciona each() en el manual y verás.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 05/05/2015, 16:54
 
Fecha de Ingreso: mayo-2015
Ubicación: España
Mensajes: 5
Antigüedad: 9 años, 6 meses
Puntos: 0
Respuesta: Duda con list() y each()

Bueno, lo haré siempre así porque se que funciona:

Código PHP:
list( $key$value) = each($matriz); 
Pero no me queda muy claro porque

*) si each() devuelve un array de 1x4 cuyos elemento son, por este orden:

1 => el dato
value => el dato
0 => la clave
key => la clave


*) list() debería asignar por lógica (según funciona list) las dos primeras posiciones del array 1x4 (1 y value) a sus dos únicas variables ($key y $value)

*) Sin embargo no es así. Sucede que:

a su primera variable, $key, le asigna la posición tercera o cuarta del vector 1x4. Que sería la clave
a su segunda variable, $value, le asigna la posición primera o segunda del vector 1x4. Que sería el dato

Este es el punto que me ha hecho un lio. El extraño comportamiento de list() en este caso.

Debe de ser algún funcionamiento especial
  #6 (permalink)  
Antiguo 05/05/2015, 17:17
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: Duda con list() y each()

El tema es que list() funciona únicamente sobre índices numéricos, así que dado el orden lógico de los mismos primero toma el elemento 0, luego el 1, etc.

No te confundas con lo que te muestra el var_dump(), ese no es el orden lógico.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 05/05/2015, 18:00
 
Fecha de Ingreso: mayo-2015
Ubicación: España
Mensajes: 5
Antigüedad: 9 años, 6 meses
Puntos: 0
Respuesta: Duda con list() y each()

Ahhhh importante detalle que desconocía sobre list.

Gracias por la aclaración maestro !!

Cierro el tema. Saludos

Etiquetas: list
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:54.