PHP
Procesando múltiples matrices juntos
Buscar..
Fusionar o concatenar matrices
$fruit1 = ['apples', 'pears'];
$fruit2 = ['bananas', 'oranges'];
$all_of_fruits = array_merge($fruit1, $fruit2);
// now value of $all_of_fruits is [0 => 'apples', 1 => 'pears', 2 => 'bananas', 3 => 'oranges']
Tenga en cuenta que array_merge
cambiará los índices numéricos, pero sobrescribirá los índices de cadena
$fruit1 = ['one' => 'apples', 'two' => 'pears'];
$fruit2 = ['one' => 'bananas', 'two' => 'oranges'];
$all_of_fruits = array_merge($fruit1, $fruit2);
// now value of $all_of_fruits is ['one' => 'bananas', 'two' => 'oranges']
array_merge
sobrescribe los valores de la primera matriz con los valores de la segunda matriz, si no puede renumerar el índice.
Puede usar el operador +
para combinar dos matrices de manera que los valores de la primera matriz nunca se sobrescriban, pero no renumera los índices numéricos, por lo que pierde los valores de las matrices que tienen un índice que también se usa en la primera matriz .
$fruit1 = ['one' => 'apples', 'two' => 'pears'];
$fruit2 = ['one' => 'bananas', 'two' => 'oranges'];
$all_of_fruits = $fruit1 + $fruit2;
// now value of $all_of_fruits is ['one' => 'apples', 'two' => 'pears']
$fruit1 = ['apples', 'pears'];
$fruit2 = ['bananas', 'oranges'];
$all_of_fruits = $fruit1 + $fruit2;
// now value of $all_of_fruits is [0 => 'apples', 1 => 'pears']
Intersección de matriz
La función array_intersect
devolverá una matriz de valores que existe en todas las matrices que se pasaron a esta función.
$array_one = ['one', 'two', 'three'];
$array_two = ['two', 'three', 'four'];
$array_three = ['two', 'three'];
$intersect = array_intersect($array_one, $array_two, $array_three);
// $intersect contains ['two', 'three']
Se conservan las claves de matriz. Los índices de las matrices originales no lo son.
array_intersect
solo verifica los valores de los arrays. array_intersect_assoc
función array_intersect_assoc
devolverá la intersección de matrices con claves.
$array_one = [1 => 'one',2 => 'two',3 => 'three'];
$array_two = [1 => 'one', 2 => 'two', 3 => 'two', 4 => 'three'];
$array_three = [1 => 'one', 2 => 'two'];
$intersect = array_intersect_assoc($array_one, $array_two, $array_three);
// $intersect contains [1 =>'one',2 => 'two']
array_intersect_key
función array_intersect_key
solo verifica la intersección de claves. Se devolverán las claves que existen en todos los arrays.
$array_one = [1 => 'one',2 => 'two',3 => 'three'];
$array_two = [1 => 'one', 2 => 'two', 3 => 'four'];
$array_three = [1 => 'one', 3 => 'five'];
$intersect = array_intersect_key($array_one, $array_two, $array_three);
// $intersect contains [1 =>'one',3 => 'three']
Combinando dos matrices (claves de una, valores de otra)
El siguiente ejemplo muestra cómo combinar dos matrices en una matriz asociativa, donde los valores clave serán los elementos de la primera matriz, y los valores serán de la segunda:
$array_one = ['key1', 'key2', 'key3'];
$array_two = ['value1', 'value2', 'value3'];
$array_three = array_combine($array_one, $array_two);
var_export($array_three);
/*
array (
'key1' => 'value1',
'key2' => 'value2',
'key3' => 'value3',
)
*/
Cambio de una matriz multidimensional a matriz asociativa
Si tienes una matriz multidimensional como esta:
[
['foo', 'bar'],
['fizz', 'buzz'],
]
Y quieres cambiarlo a una matriz asociativa como esta:
[
'foo' => 'bar',
'fizz' => 'buzz',
]
Puedes usar este código:
$multidimensionalArray = [
['foo', 'bar'],
['fizz', 'buzz'],
];
$associativeArrayKeys = array_column($multidimensionalArray, 0);
$associativeArrayValues = array_column($multidimensionalArray, 1);
$associativeArray = array_combine($associativeArrayKeys, $associativeArrayValues);
O bien, puede omitir la configuración de $associativeArrayKeys
y $associativeArrayValues
y usar este simple liner:
$associativeArray = array_combine(array_column($multidimensionalArray, 0), array_column($multidimensionalArray, 1));