Sectionner plusieurs groupe un array
Bonjour,
je souhaite trier un array pour le sectionner en groupe si certaines valeurs sont identique
le but est de récupérer la liste des inscrits à des alertes, de les trier par groupe suivant si ils ont en commun la même alerte et d'envoyer à ce groupe 1 mail (copie caché) contenant les dernières annonces, cela évite d'envoyer 1 mail pour 1 inscrit.
Pour faire simple voici ce que j'ai en tête:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| // SELECT email, region, rubrique FROM alerte ORDER BY region, rubrique ASC
// Stock le resultat dans un array (while -> foreach ...) que voici ci dessous.
Array ( [region] => 1 [rubrique] => 1 [email] => user_1 )
Array ( [region] => 1 [rubrique] => 2 [email] => user_2 )
Array ( [region] => 1 [rubrique] => 2 [email] => user_3 )
Array ( [region] => 1 [rubrique] => 3 [email] => user_4 )
Array ( [region] => 2 [rubrique] => 1 [email] => user_5 )
Array ( [region] => 2 [rubrique] => 1 [email] => user_6 )
Array ( [region] => 2 [rubrique] => 2 [email] => user_7 )
Array ( [region] => 2 [rubrique] => 2 [email] => user_8 )
Array ( [region] => 2 [rubrique] => 2 [email] => user_9 ) |
Donc je voudrais ensuite trier l'array pour faire des groupes d'users qui ont soucrit aux mêmes options (region/rubrique), cela
me permet par la suite de parcourir chaque groupe et d'envoyer 1 seul mail en copie caché au groupe avec les 5 dernieres annonces.
exemple:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
while // on boucle sur chaque groupe
{
Envoi le mail à -> user_1
// SELECT annonce FROM annonce WHERE region = 1 rubrique = 1 LIMIT 5
// envoi mail ...
Envoi le mail à -> user_2, user_3
// SELECT annonce FROM annonce WHERE region = 1 rubrique = 2 LIMIT 5
// ...
Envoi le mail à -> user_4
// SELECT annonce FROM annonce WHERE region = 1 rubrique = 3 LIMIT 5
// ...
Envoi le mail à -> user_5, user_6
// SELECT annonce FROM annonce WHERE region = 2 rubrique = 1 LIMIT 5
// ...
Envoi le mail à -> user_7, user_8, user_9
// SELECT annonce FROM annonce WHERE region = 2 rubrique = 2 LIMIT 5
// ... |
Merci pour aide ;)