Fusion et séparation de tableaux
La fonction array_merge() permet de fusionner plusieurs tableaux pour former un nouveau tableau.
<?php
$tab1 = array('daniel','isabelle');
$tab2 = array('david','robert', 'antoine');
$fusionTableau = array_merge($tab1,$tab2);
print_r($fusionTableau);
?>
Affichage
Array ( [0] => daniel [1] => isabelle [2] => david [3] => robert [4] => antoine )
Note : dans le cas des tableaux associatifs, s’ils ont des clés communes, la dernière valeur écrasera la précédente.
<?php
$moi = array("nom" => 'daniel', "age" => 30);
$remoi = array("taille" => 170, "poid" => 90, "age" => 40);
$fusionTableau = array_merge($moi,$remoi);
print_r($fusionTableau);
?>
Affichage
Array ( [nom] => daniel [age] => 40 [taille] => 170 [poid] => 90 )
Vous remarquez que la valeur de l’age après la fusion est de 40 et non de 30.
Note : sinon en cas de doublon de clé vous pouvez créer un sous-tableau qui rassemble les valeurs.
<?php
$moi = array("nom" => 'daniel', "age" => 30);
$remoi = array("taille" => 170, "poid" => 90, "age" => 40);
$fusionTableau = array_merge_recursive($moi,$remoi);
print_r($fusionTableau);
?>
Affichage
Array ( [nom] => daniel [age] => Array ( [0] => 30 [1] => 40 ) [taille] => 170 [poid] => 90 )
Vous remarquez que la valeur de l’age est un sous-tableau qui contient les valeurs 30 et 40.
La fonction array_chunk() est la fonction inverse qui permet de séparer en plusieurs tableaux un grand tableau passé en premier paramètre. Le nombre d’élément maximum pour chaque sous-tableau est indiqué en deuxième paramètre de la fonction.
<?php
$moi = array("nom" => 'daniel', "age" => 30, "taille" => 170, "poid" => 90);
$sousTableau = array_chunk($moi,2);
print_r($sousTableau[0]);
print_r($sousTableau[1]);
?>
Affichage
Array ( [0] => daniel [1] => 30 )
Array ( [0] => 170 [1] => 90 )
Vous remarquez que chaque sous-tableau possède 2 éléments.
Note : si vous voulez conserver les clés associatifs (écrasées automatiquement en valeur numérique par la fonction), il faut spécifier un booléen comme troisième paramètre.
<?php
$moi = array("nom" => 'daniel', "age" => 30, "taille" => 170, "poid" => 90);
$sousTableau = array_chunk($moi,2,TRUE);
print_r($sousTableau[0]);
print_r($sousTableau[1]);
?>
Affichage
Array ( [nom] => daniel [age] => 30 )
Array ( [taille] => 170 [poid] => 90 )