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:
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:
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:
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.
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 keysvar_dump($frontend+$backend);var_dump($frontend2+$backend2);// Podemos usar una función también, pero solo con aquellos que tengan keys númericosvar_dump(array_merge($frontend,$backend));// Si nuestros keys son letras debemos usar la siguiente funciónvar_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:
¿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.
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.
<?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