Tableaux combinaison de plusieurs clés

Résolu/Fermé
Coutcout86 Messages postés 195 Date d'inscription lundi 23 novembre 2009 Statut Membre Dernière intervention 26 mai 2016 - 16 déc. 2013 à 11:28
Doctor C Messages postés 627 Date d'inscription mardi 12 juin 2007 Statut Membre Dernière intervention 19 février 2016 - 16 déc. 2013 à 17:31
Bonjour,

j'ai un petit soucis et j'aimerais savoir comment résoudre celui-ci. Voilà j'ai un tableau de cette forme :


Array(
[0001] => Array( 'code_formation' => 0001,
'nom_formation' => Toto,
'nb_apprenants' => 13,
'statuts' => Statut1),

[0001] => Array( 'code_formation' => 0001,
'nom_formation' => Toto,
'nb_apprenants' => 1,
'statuts' => Statut2),

[0052] => Array( 'code_formation' => 0052,
'nom_formation' => Titi,
'nb_apprenants' => 15,
'statuts' => Statut54),
....

)

Et ce que j'aimerais faire c'est combiner de clé dont les valeurs sont égales. Dans mon exemple j'aimerais avoir au final un tabelau comme ceci :


Array(
[0001] => Array( 'code_formation' => 0001,
'nom_formation' => Toto,
'nb_apprenants' => 13,
'statuts' => Statut1,
'nb_apprenants2' =>1,
'statuts2' => Statut2),

[0052] => Array( 'code_formation' => 0052,
'nom_formation' => Titi,
'nb_apprenants' => 15,
'statuts' => Statut54),
....

)

Est-ce possible ?! Si oui comment pourrais-je faire ?

Merci d'avance.
Romain COUTINEAU

4 réponses

kherox Messages postés 131 Date d'inscription dimanche 13 janvier 2013 Statut Membre Dernière intervention 17 octobre 2015 1
16 déc. 2013 à 11:39
d 'bord dis pourqoui ton tableau a trois entree cela pourais facilté la suite et
0
Coutcout86 Messages postés 195 Date d'inscription lundi 23 novembre 2009 Statut Membre Dernière intervention 26 mai 2016
16 déc. 2013 à 11:56
C'est le résultat d'une requête où je récupére le nombre d'apprenants par formation et que je groupe par type de statuts.

Pourrai-tu m'aider pour résoudre ma problèmatique?

Merci d'avance.
0
kherox Messages postés 131 Date d'inscription dimanche 13 janvier 2013 Statut Membre Dernière intervention 17 octobre 2015 1
16 déc. 2013 à 12:02
dans ta requette un group by sur le code pour voir ok
je m 'explique le code 0001 represente qoui?
tu faire le group by sur ce code comme cela il va recuperer comme tu le veux
0
Coutcout86 Messages postés 195 Date d'inscription lundi 23 novembre 2009 Statut Membre Dernière intervention 26 mai 2016
16 déc. 2013 à 13:31
J'ai déjà grouper par formation et par type de statut . J'ai plusieurs types de statuts par formation par moment. Dans mon exemple ma formation ''0001'' à deux types d'apprenants : Les apprenants ayant le statut ''Statut1'' qui sont 13 et les apprenants ayant le statut ''Statut2'' qui est seul.

Donc le but serait de faire en PHP, un regroupe par code de formation.
Est-ce que tu comprend ma logique ?

Merci d'avance.
0
kherox Messages postés 131 Date d'inscription dimanche 13 janvier 2013 Statut Membre Dernière intervention 17 octobre 2015 1
16 déc. 2013 à 15:52
la meilleur solution est de define les code de formations dans un
define("code_formation_1",0001);
par exemple et maintenant dans le code pour regrouper tu faire un systeme du genre :
foreach($d as$k=>$v){
 if($v->code_formation == code_formation_1){
// ici tu mets le code de ta boucle ici dans le cas ou c'est egal
}else {
// tu met l'autre cas ici
}


}

0
Doctor C Messages postés 627 Date d'inscription mardi 12 juin 2007 Statut Membre Dernière intervention 19 février 2016 398
16 déc. 2013 à 16:42
À mon avis, il s'agit d'un problème fait sur mesure pour SQL. Pourrais-tu nous montrer la structure de ta base de données (ou du moins des tables impliquées dans ton traitement).

Je suis pas mal certain qu'une belle requête SQL t'éviterait de faire des traitements complexes en PHP.
0
Doctor C Messages postés 627 Date d'inscription mardi 12 juin 2007 Statut Membre Dernière intervention 19 février 2016 398
Modifié par Doctor C le 16/12/2013 à 17:31
Bon, j'ai vu que le problème est déjà réglé mais voici ma tentative:

$arr_formation; //Tableau déjà initialisé comme il se doit.
$arr_nouveau = null;

foreach ($arr_formation as $formation)
{
	// Récuparation des valeurs du tableau original
	$code = $formation["code_formation"];
	$nom = $formation["nom_formation"];
	$nb_app = $formation["nb_apprenants"];
	$stat = $formation["statuts"];
	
	if ( empty( $arr_nouveau[$code] ))
	{	
		// Initialisation des valeurs communes dans le nouveau tableau
		$arr_nouveau[$code]["code_formation"] = $code;
		$arr_nouveau[$code]["nom_formation"] = $nom;
	}
	
	// Placer le nombre d'apprenants et le statut dans un tableau
	$arr_apprenants = null;
	$arr_apprenants = array(
		"nb_apprenants" => $nb_app,
		"statuts" => $stat);
	
	array_push($arr_nouveau[$code]["apprenants"], $arr_apprenants);
	
}



Echo "Lima Mike Alfa";
0