Page 1 sur 1

Fonction avec tableau de données triées par date

Posté : 15 déc. 2015, 16:30
par CoeurBis
Salut,

Je fais suite à mon problème sur ce topic : php-avance/choisir-derniere-date-sql-t275072.html

J'ai réussi plus ou moins ce que je voulais faire mais je suis de nouveau bloqué pour le faire APRÈS une requête et donc en PHP.

Dans $liste, j'ai un Array avec :

1, bonjour, 2015-12-14
2, coucou, 2015-12-14
3, bonjour, 2015-12-12
4, bonjour, 2015-12-10
5, super, 2015-12-12

Mais, je souhaite, via une fonction, faire ceci :

trierParDate($liste, '2015-12-14'); // me donne un array avec "1, bonjour, 2015-12-14" et "2, coucou, 2015-12-14".
trierParDate($liste, '2015-12-12'); // me donne un array avec "3, bonjour, 2015-12-12" et "5, super, 2015-12-12".
trierParDate($liste, '0'); // me donne un array avec les derniers de chaque date "1, bonjour, 2015-12-14", "2, coucou, 2015-12-14" et "5, super, 2015-12-12".

Vous comprenez ma demande ?

Merci

Re: Fonction avec tableau de données triées par date

Posté : 15 déc. 2015, 17:14
par ynx
Salut,

Une solution possible en supposant que ton tableau initial $liste soit déjà trié :
$liste = array(
		array(1, 'bonjour', '2015-12-14'),
		array(2, 'coucou', '2015-12-14'),
		array(3, 'bonjour', '2015-12-12'),
		array(4, 'bonjour', '2015-12-10'),
		array(5, 'super', '2015-12-12')
	);
	
function trierParDate($liste, $date) {
	$listeTriee = array();
	
	foreach($liste as $element) {
		if ($date == '0') {
			$listeTriee[$element[2]] = $element;
		} else if ($element[2] == $date) {
			$listeTriee[] = $element;
		}
	}
	
	return array_values($listeTriee);
}

// test :
echo '<pre>';

$listeTriee1 = trierParDate($liste, '2015-12-14');
var_dump($listeTriee1);

$listeTriee2 = trierParDate($liste, '2015-12-12');
var_dump($listeTriee2);

$listeTriee3 = trierParDate($liste, '0');
var_dump($listeTriee3);

echo '</pre>';
Le principe est assez simple : si le paramètre $date est égal à '0', on ajoute dans un nouveau tableau tous les éléments du tableau initial en utilisant la date de chaque élément comme clé du second tableau. En utilisant la date comme clé du second tableau, tous les éléments ayant la même date vont donc s'écraser et au final seul le dernier élément de chaque date sera conservé dans le second tableau (en supposant que le tableau initial est déjà trié dans l'ordre souhaité). Si le paramètre n'est pas égal à 0, on ajoute les éléments dans le second tableau en comparant simplement la date.

Bonne journée

Re: Fonction avec tableau de données triées par date

Posté : 15 déc. 2015, 17:23
par CoeurBis
Magnifique !

Merci, c'est exactement ce qu'il me faut.

=D>