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));


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow