Tableaux combinaison de plusieurs clés

Résolu
Coutcout86 Messages postés 195 Date d'inscription   Statut Membre Dernière intervention   -  
Doctor C Messages postés 627 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention   1
 
d 'bord dis pourqoui ton tableau a trois entree cela pourais facilté la suite et
0
Coutcout86 Messages postés 195 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   1
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   1
 
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   Statut Membre Dernière intervention   399
 
À 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   Statut Membre Dernière intervention   399
 
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