"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment regrouper des tableaux associatifs par valeur de colonne tout en préservant les clés en PHP ?

Comment regrouper des tableaux associatifs par valeur de colonne tout en préservant les clés en PHP ?

Publié le 2024-11-06
Parcourir:363

How to Group Associative Arrays by Column Value While Preserving Keys in PHP?

Regroupement de tableaux associatifs par valeur de colonne tout en préservant les clés

Considérons un tableau de tableaux associatifs, chacun représentant une entité avec des attributs tels que « id » et 'nom'. Le défi est de regrouper ces tableaux en fonction d'une colonne spécifique, 'id', tout en conservant les clés d'origine.

Pour y parvenir, nous pouvons utiliser la boucle foreach de PHP pour parcourir le tableau. Pour chaque tableau interne, nous extrayons la valeur « id » et l'utilisons comme index d'un nouveau tableau associatif. Dans ce nouveau tableau, nous attribuons la clé d'origine comme index et le tableau interne comme valeur.

$arr = array();

foreach ($old_arr as $key => $item) {
   $arr[$item['id']][$key] = $item;
}

Enfin, nous utilisons ksort() pour trier numériquement le tableau résultant, en garantissant que les groupes sont présentés par ordre croissant de 'id'.

ksort($arr, SORT_NUMERIC);

La sortie sera un tableau dans lequel chaque élément représente un groupe d'entités avec la même valeur « id », tandis que les clés d'origine sont conservées dans chaque groupe.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3