Foros del Web » Programando para Internet » PHP »

Fusionar arrays

Estas en el tema de Fusionar arrays en el foro de PHP en Foros del Web. Hola! tengo el siguiente problema : Tengo dos arrays y quiero fusionarlos pero de una manera especial por ejemplo tengo Código PHP: $array1  = [  "nombre"  ...
  #1 (permalink)  
Antiguo 20/08/2015, 11:10
 
Fecha de Ingreso: agosto-2015
Mensajes: 1
Antigüedad: 9 años, 4 meses
Puntos: 0
Fusionar arrays

Hola! tengo el siguiente problema :

Tengo dos arrays y quiero fusionarlos pero de una manera especial por ejemplo tengo

Código PHP:

$array1 
= [ "nombre" => "Persona1""nombre" => "Persona2"];

$array2 = [ "id" => "123""id" => "1234"]; 
y quiero fusionarlos algo así

Código PHP:

$arrayFinal
= [
        [
            
"nombre"  => "Persona1",
            
"id"      => "123"
        
],
        [
            
"nombre"  => "Persona2",
            
"id"      => "1234"
        
]

    ]; 
  #2 (permalink)  
Antiguo 20/08/2015, 11:40
(Desactivado)
 
Fecha de Ingreso: abril-2015
Ubicación: España
Mensajes: 616
Antigüedad: 9 años, 8 meses
Puntos: 74
Respuesta: Fusionar arrays

¿Estás seguro de que se puede utilizar varias veces la misma clave en un array? En el array1 usas 2 veces la clave "nombre" y, en el segundo, 2 veces la clave "id". Yo diría que no es correcto.
  #3 (permalink)  
Antiguo 20/08/2015, 11:50
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: Fusionar arrays

Bienvenido a FDW.

Tal y como te lo dice superweb360 y como señala el manual oficial:

Cita:
Iniciado por Manual de PHP
Si varios elementos en la declaración del array usan la misma clave, sólo la última será usada y los demás son sobrescritos.
Si solo usaras los índices numéricos por defecto, es decir, si no especificaras los índices como lo haces, podrías crear el array asociativo usando un bucle.

Código PHP:
Ver original
  1. $a = ['foo', 'bar'];
  2. $b = ['bin', 'baz'];
  3. for ($i = 0, $f = [], $l = count($a); $i < $l; $f[] = [$a[$i], $b[$i]], $i++);

Obteniendo como resultado lo siguiente:
Código HTML:
Ver original
  1. Array
  2. (
  3.     [0] => Array
  4.         (
  5.             [0] => foo
  6.             [1] => bin
  7.         )
  8.  
  9.     [1] => Array
  10.         (
  11.             [0] => bar
  12.             [1] => baz
  13.         )
  14. )

Solo es cuestión de recorrer ambos arrays, tomar cada uno de sus valores, insertarlos en un array y este en otro.

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
  #4 (permalink)  
Antiguo 20/08/2015, 12:01
(Desactivado)
 
Fecha de Ingreso: abril-2015
Ubicación: España
Mensajes: 616
Antigüedad: 9 años, 8 meses
Puntos: 74
Respuesta: Fusionar arrays

Cita:
for ($i = 0, $f = [], $l = count($a); $i < $l; $f[] = [$a[$i], $b[$i]], $i++);
Es la primera vez que veo usar un bucle for de esta manera. Me parece un tanto extraño y resulta un poco ilegible.
  #5 (permalink)  
Antiguo 20/08/2015, 12:23
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: Fusionar arrays

Como debes de saber, en la estructura for hay tres secciones:
  1. Inicialización del contador
  2. Condición
  3. Aumento o decremento del contador

Ahora bien, las tres secciones están divididas por puntos y comas, sin embargo, para declarar otras variables (primera sección) o realizar otras acciones (tercera sección), puedes añadirlas, separadas por comas.

Lo de la legibilidad, bueno, es cierto, pero por eso añadí la explicación respectiva.

Esta sería la forma no comprimida:
Código PHP:
Ver original
  1. $f = []; //Array final
  2. $l = count($a); //Total de elementos del array $a
  3. for ($i = 0; $i < $l; $i++){
  4.     //Añado un array al array $f que contendrá a los dos valores actuales de $a y $b
  5.     $f[] = [$a[$i], $b[$i]];
  6. }

El manual de PHP es claro al respecto. Fíjate en el cuarto ejemplo para que lo corrobores.

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

Última edición por Alexis88; 20/08/2015 a las 13:08 Razón: Enlace

Etiquetas: arrays, fusionar
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:10.