Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Forma de asignacion en array

Estas en el tema de Forma de asignacion en array en el foro de PHP en Foros del Web. hola muy buenas tardes, he visto esto en un tutorial y tengo duda: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original while ( $fila = $result -> ...
  #1 (permalink)  
Antiguo 23/05/2014, 15:37
Avatar de Maverick2786  
Fecha de Ingreso: diciembre-2012
Mensajes: 107
Antigüedad: 12 años
Puntos: 1
Forma de asignacion en array

hola muy buenas tardes, he visto esto en un tutorial y tengo duda:
Código PHP:
Ver original
  1. while ($fila = $result->fetch_array()) {
  2.     $categorias[] = $fila['categoria'];
  3. }

Mi pregunta es si, es como un push o machaca el valor que esta en esa posicion
  #2 (permalink)  
Antiguo 23/05/2014, 15:43
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 8 meses
Puntos: 292
Respuesta: Forma de asignacion en array

Ese while extrae registros y los mete dentro del array $categorias

array_push() haria lo mismo:

Código PHP:
Ver original
  1. while ($fila = $result->fetch_array()) {
  2.     array_push($categorias,$fila['categoria']);
  3. }
__________________
Salu2!
  #3 (permalink)  
Antiguo 23/05/2014, 15:52
Avatar de Maverick2786  
Fecha de Ingreso: diciembre-2012
Mensajes: 107
Antigüedad: 12 años
Puntos: 1
Respuesta: Forma de asignacion en array

a ok, muchas gracias, en resumen, pone los valores uno despues del otro, no los sustituye?
  #4 (permalink)  
Antiguo 23/05/2014, 16:17
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 8 meses
Puntos: 292
Respuesta: Forma de asignacion en array

Exacto, cualquier duda el manual es tu amigo
__________________
Salu2!
  #5 (permalink)  
Antiguo 23/05/2014, 18:17
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años, 1 mes
Puntos: 977
Respuesta: Forma de asignacion en array

Como bien te dice Italico76, tiene el mismo efecto que la función array_push, insertando un elemento al final del array, sin embargo, si hicieras esto:

Código PHP:
Ver original
  1. $array[1] = $elemento;

Y previamente hubieras asignado un valor a dicha posición, entonces sí ocurrirá el machacado de datos que mencionas.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #6 (permalink)  
Antiguo 24/05/2014, 19:42
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 13 años, 3 meses
Puntos: 397
Respuesta: Forma de asignacion en array

Cita:
Iniciado por Italico76 Ver Mensaje
Ese while extrae registros y los mete dentro del array $categorias

array_push() haria lo mismo:

Código PHP:
Ver original
  1. while ($fila = $result->fetch_array()) {
  2.     array_push($categorias,$fila['categoria']);
  3. }
Según he leído en el manual no es nada óptimo usar una función para hacer algo que la misma sintaxis de php lo permite. Cito la nota (negrita mías):

Cita:
Nota: Si se utiliza array_push() para añadir un solo elemento en el array, es mejor utilizar $array[] = ya que de esta forma no existe la sobrecarga de llamar a una función.
Fuente.

@Maverick2786 el ejemplo que pusiste (complementandolo un poco) está bien. El valor no se sobre escribe. Pongamos un ejemplo.

Tienes tres categorías y las recorres en un while para guadarlas en un array

Código PHP:
Ver original
  1. $categorias = array();
  2.  
  3. while ($fila = $result->fetch_array()) {
  4.     $categorias[] = $fila['categoria'];
  5. }

Cada vez que invocas $categorias[] automáticamente PHP le asigna un indice. Si no hay ningún indice creado en el array empieza por el 0 hasta que termine.

Su haces un var_export a $categorias te darías cuenta de que tiene una estructura similar a

Código:
array(
   0 => "categoría 1",
   1 => "categoría 2",
   2 => "categoría 3",
);
Esta manera es óptima si no importa el indice del array y necesitas usar los datos para presentación. (como usar un select)

El código que muestras al principio es igual a este:

Código PHP:
Ver original
  1. $categorias = array();
  2. $i = 0;
  3. while ($fila = $result->fetch_array()) {
  4.     $categorias[$i] = $fila['categoria'];
  5.     $i++;
  6. }

Pero no tendría sentido al ser un proceso automático de PHP

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.

Etiquetas: asignacion, forma
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:28.