1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
<?php
// Ce que tu dois récupérer de la requête
$data = array(
array('id' => 1, 'matricule' => 'm1234', 'nom' => 'def', 'date_dispo' => '2012-07-12'),
array('id' => 2, 'matricule' => 'm5678', 'nom' => 'abc', 'date_dispo' => '2012-07-12'),
array('id' => 3, 'matricule' => 'm1234', 'nom' => 'def', 'date_dispo' => ''),
array('id' => 4, 'matricule' => 'm5678', 'nom' => 'abc', 'date_dispo' => ''),
array('id' => 5, 'matricule' => 'm1415', 'nom' => 'hij', 'date_dispo' => ''),
);
// ici on retire les doublons on préservant la date si elle est présente
$liste = array();
$noms = array(); // pour le tri par noms croissants
foreach($data as $k => $v) {
$matricule = $v['matricule']; // ici tu peux rajouter le préfixe m par exemple (voir le pourquoi ci-dessous)
if (isset($liste[$matricule])) {
if (empty($liste[$matricule]['date_dispo'])) {
$liste[$matricule]['date_dispo'] = $v['date_dispo'];
}
}
else {
$liste[$matricule] = array(
'nom' => $v['nom']
'date_dispo' => $v['date_dispo'],
);
$noms[$matricule] = $v['nom'];
}
}
// attention : le tri réindexe les clés numériques : ton matricule qui sert de clé
// est numérique, tu le perdras en sortie de tri
// c'est pour ça que j'ai rajouté un m devant chaque valeur numérique
array_multisort($noms, SORT_ASC, $liste);
print_r($liste);
?> |
Partager