PHP
Traitement de plusieurs tableaux ensemble
Recherche…
Fusionner ou concaténer des tableaux
$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']
Notez que array_merge
modifiera les index numériques, mais écrasera les index de chaîne
$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
écrase les valeurs du premier tableau avec les valeurs du second tableau, s'il ne peut pas renuméroter l'index.
Vous pouvez utiliser l'opérateur +
pour fusionner deux tableaux de manière à ce que les valeurs du premier tableau ne soient jamais écrasées, mais il ne renumérote pas les index numériques. Vous perdez donc les valeurs des tableaux dont l'index est également utilisé dans le premier tableau. .
$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']
Intersection du tableau
La fonction array_intersect
renvoie un tableau de valeurs existant dans tous les tableaux passés à cette fonction.
$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']
Les clés de tableau sont conservées. Les index des tableaux d'origine ne le sont pas.
array_intersect
ne vérifie que les valeurs des tableaux. array_intersect_assoc
fonction array_intersect_assoc
renverra l'intersection des tableaux avec les clés.
$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']
fonction array_intersect_key
ne vérifie que l'intersection des clés. Il retournera les clés dans tous les tableaux.
$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']
Combiner deux tableaux (les clés d'un, les valeurs d'un autre)
L'exemple suivant montre comment fusionner deux tableaux en un tableau associatif, où les valeurs de clé seront les éléments du premier tableau et les valeurs seront celles du second:
$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',
)
*/
Modification d'un tableau multidimensionnel en tableau associatif
Si vous avez un tableau multidimensionnel comme celui-ci:
[
['foo', 'bar'],
['fizz', 'buzz'],
]
Et vous voulez le changer en un tableau associatif comme ceci:
[
'foo' => 'bar',
'fizz' => 'buzz',
]
Vous pouvez utiliser ce code:
$multidimensionalArray = [
['foo', 'bar'],
['fizz', 'buzz'],
];
$associativeArrayKeys = array_column($multidimensionalArray, 0);
$associativeArrayValues = array_column($multidimensionalArray, 1);
$associativeArray = array_combine($associativeArrayKeys, $associativeArrayValues);
Ou, vous pouvez ignorer les paramètres $associativeArrayKeys
et $associativeArrayValues
et utiliser ce simple liner:
$associativeArray = array_combine(array_column($multidimensionalArray, 0), array_column($multidimensionalArray, 1));