Comment trier un tableau par ordre alphabétique et le séparer en groupes définis par la première lettre ?

Je veux savoir comment faire avec php.

Je récupère une liste de noms de la base de données.

Ce que je recherche :

 [
     "letter" => "B",
     "name" => "Bikes"
 ],
 [
     "letter" => "B",
     "name" => "Bateau"
 ],
 [
     "letter => "C",
     "name"  => "Cars"
 ]

Ce que je veux

Regrouper en PHP-Mysql dans l'objectif de creer un MegaMenu alphabétique toutes les catégories associées à la bonne lettre etc..

Merci d'avance pour votre aide !

3 réponses


Tu dois pouvoir le faire directement dans ta requête SQL avec un truc du genre :

SELECT name, SUBSTR(name, 1,1) as letter FROM 'maTable' order by letter ASC

Alors tu as comme dit au dessus x)

Après si c'est pour tout grouper pour en faire un menu je te conseille de faire une requete groupée

    SELECT substr(name, 1, 1) as letter, group_concat(name) as name FROM tatable group by letter;

Tu auras tous tes name groupés par ordre alphabétique, en résultat SQL tu auras:

    [
        "letter" => "B",
        "name" => "Bikes,Bateau",
    ], [
    [
        "letter": "C",
        "name": "Cars",
    ]

Ensuite en résultat PHP tu peux faire un explode pour obtenir ce résultat:

    [
        "letter" => "B",
        "name" => [
            "Bike",
            "Bateau",
        ],
    ], [
    [
        "letter": "C",
        "name": [
            "Cars",
        ],
    ]

Mieux pour un megamenu :p

Peu etre même faire du JSON:

    [{
        "B": [
            "Bike",
            "Bateau",
        ],
        "C": [
            "Cars",
        ]
    }]

Enfin l'important c'est d'avoir un tableau groupé par lettre que ce soit un tableau ou un JSON

exaland
Auteur

Salut ,

Ok je vais essayer ! Merci à tous les 2 pour votre réponse très utile !! :)