Carlos Eduardo Gomez García
Wilman Perilla
¿Cómo unir arrays diferentes en PHP?
El manejo de arrays es una competencia fundamental en cualquier lenguaje de programación, y PHP no es la excepción. Integrar varios arrays de manera efectiva permite optimizar y profundizar el entendimiento de la manipulación de datos. Este artículo se enfoca en ejemplificar cómo unir arrays en PHP y las diferentes técnicas disponibles, ayudándote a elegir el método más adecuado para tus necesidades.
¿Qué ocurre al unir arrays con el operador "+"?
Unir arrays utilizando el operador "+" es una técnica rápida y común. Consiste en sumar dos arrays, pero con una salvedad: PHP reemplazará los valores de las claves duplicadas. Por ejemplo:
$array1 = ['JavaScript', 'PHP']; $array2 = ['PHP', 'Laravel']; $resultado = $array1 + $array2; print_r($resultado); // Imprimirá: ['JavaScript', 'PHP']
En este caso, PHP reemplazó el segundo "PHP" porque las claves numéricas se repiten. Todo se debe a que al repetirse claves, Javascript reemplaza al valor anterior. Una forma de evitar esto es asegurar que las claves sean únicas para que no haya confrontaciones y los elementos no se borren.
¿Cómo utilizar funciones propias de PHP para unir arrays?
PHP ofrece funciones específicas como array_merge para manejar la fusión de arrays de manera más controlada, sobre todo si la suma de arrays no es suficiente:
$array1 = ['a' => 'JavaScript', 'b' => 'PHP']; $array2 = ['a' => 'Laravel']; $resultado = array_merge($array1, $array2); print_r($resultado); // Imprimirá: ['a' => 'Laravel', 'b' => 'PHP']
Aquí, las claves string también se reemplazarán, pero, ¿qué pasa si necesitamos incluir todos los valores de las claves repetidas? En este caso, se pueden utilizar funciones recursivas.
¿Qué es la fusión recursiva de arrays?
La función array_merge_recursive es ideal cuando se trata de claves string repetidas, ya que no las reemplaza, sino que crea un array para cada clave repetida:
$array1 = ['a' => 'JavaScript', 'b' => 'PHP']; $array2 = ['a' => 'Laravel']; $resultado = array_merge_recursive($array1, $array2); print_r($resultado); // Imprimirá: ['a' => ['JavaScript', 'Laravel'], 'b' => 'PHP']
Este método es particularmente útil cuando necesitamos preservar todos los valores de una clave que está repetida.
¿Cómo combinar claves y valores de arrays?
La función array_combine puede ayudarnos a tomar las claves de un array y los valores de otro para crear un nuevo array altamente significativo:
$cursos = ['JavaScript', 'PHP', 'Laravel']; $categorias = ['front', 'back', 'framework']; $resultado = array_combine($categorias, $cursos); print_r($resultado); // Imprimirá: ['front' => 'JavaScript', 'back' => 'PHP', 'framework' => 'Laravel']
Este método es perfecto cuando queremos asignar categorías a cursos, como en nuestro ejemplo, y nos proporciona claridad al establecer relaciones específicas entre las claves y los elementos.
¿Qué más puedo lograr con la manipulación de arrays?
Manipular arrays en PHP no se limita solo a unir, sino también a ordenar, buscar, y comparar datos. Dominar estas operaciones brinda una base sólida no solo para PHP, sino también para aquellos interesados en frameworks avanzados, permitiendo un mejor análisis y entendimiento de estructuras de datos.
No te olvides de seguir investigando, aprendiendo y aplicando estas técnicas para fortalecer tus habilidades y adaptarlas a diversas situaciones programáticas. Al comprender completamente estas funciones, podrás manipular y organizar datos más efectivamente, optimizando tus proyectos y ampliando tu dominio de PHP.
Carlos Eduardo Gomez García
Wilman Perilla
Danny Velásquez
Ricardo Andres Zambrano Cuaicuan
Edwar Enrique Vilchez Serrano
Aldo Miguel Ortiz Parodi
LESTHER XITUMUL MANUEL
María Sierra
Guillermo Baldán López
Jimmy Buriticá Londoño
Cristian Andres Ladino Peña
Raul Santos
Kenet Andrés Chungandro Montenegro
Fernando Alberto Velasquez Aguilera
José Alberto Ortiz Vargas
Aldo Miguel Ortiz Parodi
Carlos Eduardo Gomez García
Aldo Miguel Ortiz Parodi
Usuario anónimo
UserJavier Amaya Patricio
Milton Borrero
Àlex Serra N
Juan Pablo Campuzano Monsalve
Jordi Yair Calva García
Maximiliano Ruben Jayme Dahlquist
Diego Nalvarte
Jorge Guerrero
Henry
Aldo Miguel Ortiz Parodi
Luis Arturo Sánchez Sánchez
La función array_merge_recursive es super útil cuando tenemos arrays con datos desordenados y queremos ordenarlos, pues como se muestra en la clase, junta ambos arrays y los agrupa, excelente curso, creo que se enseñaron muchas cosas interesantes, incluso aprendí algunas nuevas :D
jajaja Retax si aprendió usted imagínese los demás.
Mis Apuntes
<?php echo "<h1>Unión</h1>"; echo "---------------"; echo "<br>"; $frontent = [ 'frontend' => 'javascript' ]; $backend = [ 'backend' => 'php', 'framework' => 'laravel' ]; echo "<pre>"; var_dump($frontent + $backend); #array_merge() //Combina dos o más arrays $frontent1 = ['javascript']; $backend1 = ['php', 'laravel']; echo "<pre>"; var_dump(array_merge($frontent1, $backend1)); echo "<br>"; //Ejemplo con los mismo key #array_merge_recursive //Une dos o más arrays recursivamente $frontent3 = [ 'a' => 'javascript' ]; $backend3 = [ 'a' => 'php', 'b' => 'laravel' ]; echo "<pre>"; var_dump(array_merge_recursive($frontent3, $backend3)); //Esto crea un array "a" donde mete unos elementos y otro "b" que mete los demás //resultado /* array(2) { ["a"]=> array(2) { [0]=> string(10) "javascript" [1]=> string(3) "php" } ["b"]=> string(7) "laravel" } */ echo "<br>"; //Ejemplo con los mismo key #array_combine //Crea un nuevo array, usando una matriz para las claves y otra para sus valores $courses = ['javascript', 'php', 'laravel']; $categories = ['frontend', 'backend', 'framework']; var_dump(array_combine($categories, $courses));
Excelente aporte
Que gran explicación el curso debería llamarse PHP for Dummies (sin ofender). Extremadamente sencillo aprender de esta forma. Gracias Maestro
Esta parte de funciones sí, pero el inicio estuvo bastante complejo.
Naaah jaja ya sé programar y hasta cierto punto hay algunas cosas que si fueron interesantes y nuevas para mi. Aunque como siempre, habría que ver en qué situaciones podría usar todas estas funciones, a lo mucho lo que sí sé que voy a utilizar son las funciones de unión y combinación.
Unión
Podemos unir diferentes Arrays mediante la siguientes formas:
<?php $frontend = [ 'html', 'javascript', 'react.js' ]; $backend = [ 'php', 'laravel' ]; $frontend2 = [ 'structure' => 'html', 'frontend' => 'javascript', 'framework' => 'react.js' ]; $backend2 = [ 'backend' => 'php', 'framework bk' => 'laravel' ]; // Podemos unir dos arryas así, pero terminaría borrando algunos valores. Sí // queremos evitarlo debemos poner keys var_dump($frontend + $backend); var_dump($frontend2 + $backend2); // Podemos usar una función también, pero solo con aquellos que tengan keys númericos var_dump(array_merge($frontend, $backend)); // Si nuestros keys son letras debemos usar la siguiente función var_dump(array_merge_recursive($frontend2, $backend2)); // Y si queremos combinar dos arrays,así creamos arrays complejos y lo hacemos con la función array_combine $cursos = ['JS', 'php', 'laravel']; $categorias = ['front', 'back', 'framework']; var_dump(array_combine($cursos, $categorias));
Muchas gracias por tus aportes, me hacen la vida más fácil
Existe una función llamada print_r() que permite dar una visualización "atractiva" a los arreglos, les muestro un ejemplo:
Buen aporte 💪
Esta funcion es mucho mas atractiva visualmente y mas legible, muy buen aporte. Gracias!!!
gracias
De todos los métodos disponibles, me agrado bastante el método array_combine, ya que considero que puede ser muy útil para implementarlo en el desarrollo de cualquier software:
$courses = ['javascript', 'php', 'laravel']; $categories = ['frontend', 'backend', 'framework']; echo "<pre>"; print_r(array_combine($categories, $courses));
¿Alguien con experiencia en PHP que responda?
De acuerdo a un comentario en la documentación, se sugiere usar el nuevo spread operator en vez de array_merge.
.
Comparto el comentario (en inglés):
.
We no longer need array_merge() as of PHP 7.4.
[...$a, ...$b]
does the same as
array_merge($a, $b)
and can be faster too.
https://wiki.php.net/rfc/spread_operator_for_array#advantages_over_array_merge
¡Hola! Así es, puedes usarlos también, es más recomendable, pero también puedes usar array_merge sin problemas :D
Gracias Retax :).
👾 La unión en PHP nos permiten unir elementos de selecciones.
<?php $greets = ['Hello', 'Hi']; $presentations = ['Good morning', 'Good afternoon', 'Good evening']; var_dump($presentations + $greets);
Me encanto poder expandir un poco más el repertorio de las funciones con php que conocía, ya que muchas veces en la práctica o en el trabajo olvidamos lo básico y andamos reinventando la rueda. Con esto daré uno o dos vistazos a la documentación y a mis apuntes antes de tocar código. Gracias profesor.
Aporte de la clase 💚
notas:
array_combine($array1, $array2): si queremos combinar dos arrays** creando un array complejo** quedando el $array1 como keys y el $array2 como values.
Excelente curso! Excelente clase!
Aqui mis apuntes:
<?php echo "<h2>Comparación</h2>"; $courses = ["javascript", "php"]; $wishes = ["php", "laravel", "javascript", "vue"]; echo "<pre>"; // var_dump(array_diff($wishes, $courses)); $arrayA = [1, 2, 3, 4, 5, 6, 7]; $arrayB = [1, 2, 3, 85, 6, 7]; var_dump(array_diff($arrayA, $arrayB)); echo "</pre>"; echo "<h3>Union</h3>"; $frontend = [ "frontend" => 'javascript' ]; $backend = [ "framework" => 'php', "framework" => "laravel" ]; echo "<pre>"; // var_dump(array_merge($frontend, $backend)); var_dump(array_merge_recursive($frontend, $backend)); echo "</pre>";
<?php $frontEndTech = [ 'JavaScript', 'ReactJS', 'VueJS', 'Angular', 'Laravel', ]; $backEndTech = [ 'PHP', 'Laravel', 'NodeJS', 'Python', 'Django', 'Typescript' ]; print("\n\n##### Join two arrays #####\n"); print_r(array_unique(array_merge($frontEndTech, $backEndTech))); $coursesWithTopic = [ 'Data management' => 'PHP', 'Cloud computing' => 'GO', 'APIs' => 'PHP', 'Web development' => 'JavaScript', 'Desktop applications' => 'Java', 'Mobile applications' => 'Kotlin', ]; $wishListOfTopics = [ 'Data management' => 'C++', 'Cloud computing' => 'Python', 'APIs' => 'Java', 'Web development' => 'PHP', 'Desktop applications' => 'GO', 'Mobile applications' => 'Swift', 'Machine learning' => 'Python', 'Deep learning' => 'Python', 'Artificial intelligence' => 'Python', 'Blockchain' => 'JavaScript', 'Web3.0' => 'JavaScript', 'Cryptocurrency' => 'JavaScript', 'Games' => 'C++', 'Microcontrollers' => 'C', ]; print("\n\n##### Join two arrays with keys #####\n"); print_r(array_merge_recursive($coursesWithTopic, $wishListOfTopics)); $labels = [ 'backend', 'frontend', 'mobile', 'desktop', ]; $langs = [ 'PHP', 'JavaScript', 'Java', 'Python', ]; print("\n\n##### Combine the fist array with the second array, using the third array as keys #####\n"); print_r(array_combine($labels, $langs));
Otra alternativa para combinar arrays es usar spread operator. [...array1, ...array2] generando un unico array. [array1, ...array2] generando un array con 2 arrays.
sre
Resumen de la clase
<?php /* $fronend =[ 'frontend1'=>'PHP', 'frontend2'=>'JavaScript']; $backend= [ 'backend1'=>'Python', 'backend2'=>'C#', 'backend3'=>'C++']; echo '<pre>'; var_dump($fronend+$backend); //Union de dos arrays echo '</pre>'; $fronend1 = ['PHP','JavaScript']; $backend1 = ['Python','C#','C++']; echo '<pre>'; var_dump(array_merge($fronend1,$backend1)); //Unir dos arrays echo '</pre>'; */ $courses =['PHP','JavaScript']; $categories = ['frontend','backend']; echo '<pre>'; var_dump(array_combine($categories,$courses)); //Combina los arrays ?>
tambien existe esta forma de unir arreglos
$array1 = [1,2,3]; $array2 = [2,3,4]; //convertir 2 arreglos en uno solo $array3 = [...$array1, ...$array2]; print_r($array3); // otra forma $array4 = array_merge($array1, $array2); print_r($array4); ?>
15. Unión
Cómo unir diferentes arrays, le comparto el código de la clase:
<?php /** * array_merge($array1, $array2); * Une dos arrays, pero si las keys de los elementos * son strings iguales, pues prevalece el elemento más reciente * Para evitar esto se debe usar una función especial * array_merge_recursive($array1, $array2); * Pero crear un subarray que tiene todos los elementos que * comparten una misma key (en string) * array_combine($categories, $courses); * Lo que hace es combinar keys y valores en un solo * array de keys y valores, siendo el primer parámetro las keys * y el segundo los valores */ $courses = ['javascript', 'php', 'laravel']; $categories = ['front', 'back', 'framework']; echo "<pre>"; var_dump(array_combine($categories, $courses)); //var_dump(array_merge_recursive($frontend, $backend));
<?php $course = ['javascript', 'php']; $wishes = ['php', 'laravel', 'javascript', 'vuejs']; var_dump(array_diff($wishes, $course)); # array_diff — Calcula la diferencia entre arrays $arrayA = [1, 2, 3, 4, 5]; $arrayB = [1, 6, 3, 7, 5]; var_dump(array_diff($arrayA, $arrayB)); var_dump(array_diff($arrayB, $arrayA)); // array_diff_assoc — Calcula la diferencia entre arrays con un chequeo adicional de índices $arrayA = array("a" => "JavaScript", "b" => "PHP", "c" => "Golang", "d" => "Ruby"); $arrayB = array("a" => "JavaScript", "d" => "Haskell", "Assembler"); var_dump(array_diff_assoc($arrayA, $arrayB)); //output: ['PHP', 'Golang', 'Ruby'] var_dump(array_diff_assoc($arrayB, $arrayA)); //output: ['Haskel', 'Assembler'] // Clase 15 $front = array('frontend' => 'javascript'); $backend = array('backend' => 'php', 'framework' => 'laravel'); echo "<pre>"; var_dump($front + $backend); // uniomn de 2 arrays por concatenación $front = array('javascript'); $back = array('php', 'laravel'); echo "<pre>"; var_dump(array_merge($front, $backend)); // array_merge — Combina dos o más arrays $front = array('a' => 'javascript'); $backend = array('a' => 'php', 'b' => 'laravel'); echo "<pre>"; var_dump(array_merge_recursive($front, $backend)); // array_merge_recursive — Une dos o más arrays recursivamente $couorses = array('javascript', 'php', 'laravel'); $categories = array('front', 'back', 'framework'); echo "<pre>"; var_dump(array_combine($couorses, $categories)); # array_combine — Crea un nuevo array, usando una matriz para las claves y otra para sus valores