8721 sujets

Développement web côté serveur, CMS

Bonjour,

Le titre résume bien le tout, voilà le soucis :
J'ai un tableau du type :

Array
(
    [0] => Array(user_1, service_1, statut)
    [1] => Array(user_1, service_2, statut)
    [2] => Array(user_2, service_1, statut)
    [3] => Array(user_1, service_3, statut)
    [4] => Array(user_3, service_2, statut)
    [5] => Array(user_3, service_3, statut)
)

la partie 'statut' peut prendre 3 valeurs : "Admin", "Chef", "Membre"
Quant aux variables 'user' et 'service', leurs valeurs sont multiples...

Et je voudrais, extraire tout les sous-tableaux pour les fusionner et obtenir un truc du style :

Array
(
    [0] => user_1
    [1] => Array(service_1, statut)
    [2] => Array(service_2, statut)
    [3] => Array(service_3, statut)
)
Array
(
    [0] => user_2
    [1] => Array(service_1, statut)
)
Array
(
    [0] => user_3
    [2] => Array(service_2, statut)
    [3] => Array(service_3, statut)
)

La forme des tableaux obtenues n'a pas d'importance : c'est le classement qui compte...
J'ai parcourue la doc php et la seule fonction qui a retenue mon attention est "array_merge()" mais elle efface les clés qu'elle à déjà rencontrer alors que je voudrais les ajouter...

Quelqu'un pourrait-il m'éclairer ?
En vous remerciant Smiley biggrin
Modifié par toukilbv (24 May 2013 - 16:51)
Modérateur
Et juste le parcourir? Array merge est pour fusionner plusieur tableaux… une proposition en parcourant et rendant un tableau à la structure sensiblement différente, mais plus cohérente:


// admettons que le tableau d'origine soit $base_array
$end_array = array();
foreach($base_array as $array_truc) {
  $end_array[$array_truc[0]][] = array($array_truc[1], $array_truc[2]);
}

(en remplaçant $base_array, $array_truc, et $end_array par des noms plus parlant ^^)

cela donnera pour $end_array:


Array
(
    [user_1] => Array
    (
      [0] => Array(service_1, statut)
      [1] => Array(service_2, statut)
      [2] => Array(service_3, statut)
    )
    [user_2] => Array
    (
      [1] => Array(service_1, statut)
    )
    etc.
)
C'est vrai que je cherche à me casser la tête pour rien, ta technique marche parfaitement!
Merci kustolovic! Smiley biggrin