L'heure la plus proche dans un array

Résolu
Utilisateur anonyme - Modifié le 17 déc. 2009 à 21:27
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 - 17 déc. 2009 à 21:27
Bonjour,

Je remplis un array avec tous les titres de mes musiques avec chaques fois l'heure de diffusion.
Je remis chaques fois cet array en début d'heure, et tous les titres des 60 minutes sont déjà dans cet array mêmes si ils n'ont pas encore été diffusés.

Comment pourrais-je séléctionner les 5 derniers titres joués en ordre décroissant en partant de l'heure la plus proche de l'heure actuelle ?

J'espère que je suis assez explicite :)
Si vous avez des pistes :)

Merci,

A++

10 réponses

kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
17 déc. 2009 à 08:47
Re,

Arf, en XML ça va être difficile de faire plus simple, encore qu'il est peut être possible de filtrer au moment de la lecture du fichier.

Sinon tu peux faire un truc comme ça :

<?php
$arrTime = array(
'08:10', '08:15', '08:17', '08:25', '08:40', '08:45', '08:38', '08:52'
);

function latestPlay ($time) {
$dtNow = new DateTime();
$dtTime = new DateTime($time);
return $dtNow > $dtTime;
}

$a = array_filter($arrTime, 'latestPlay');
$a = array_slice($a, '-5');
print_r($a);
?>

Je l'ai écrit rapidement mais ça devrait fonctionner.
La fonction ne sert qu'a retourner les titres qui ont déjà été joués, ça te laisse ainsi la possibilité de la réutiliser pour par exemple afficher tous les titres, les 10 derniers, les 15, ...

Cordialement,


Kohntark -
3
syndrael Messages postés 2378 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 29 décembre 2012 20
16 déc. 2009 à 13:29
Tu passes par PHP, ou MySQL ?
S.
0
C'est contenu dans un Array en PHP

A++
0
syndrael Messages postés 2378 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 29 décembre 2012 20
16 déc. 2009 à 15:44
Comment est organisé ton tableau PHP contenant ton titre et l'heure ? Pour ma part, j'ajoute un élément en plus qui serait la différence en temps entre l'heure de diffusion et l'heure actuelle.
Es-tu en PHP 5 ?
S.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Hello,


J'ai deux tableaux différents. Un pour les titres, et un pour l'heure. Donc je sais que $monarray_heure[3] est l'heure de diffusion de $monarray_titre[3].

Je suis bien en PHP5

et la différence d'heure est a mon avis la piste mais comment justement trouvé l'heure la plus proche dans mon array par rapport a l'heure la plus proche ?

Merci a toi :)


A++
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
16 déc. 2009 à 20:50
Salut,

Je ne suis pas sur d'avoir bien compris.

Tu as 2 tableaux qui ressemblent à ça :
$arrTitre = array(
0=>'My Favorite Things',
'Kohntark',
'A saucerful of secrets',
...
);

$arrHeureDiff = array(
0=>'20:01',
'20:13',
'20:35',
...
);

J'ai bon ?

Je ne connais pas le reste de ta structure mais il y a sans doute plus simple (et rapide) comme traitement.
D'où proviennent les données stockées dans les tableaux ?


Kohntark -
0
C'est exactement ca !
je reprend les données d'un xml


A++
0
C'est exactement ca :)

Merci beaucoup !

A++
0
syndrael Messages postés 2378 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 29 décembre 2012 20
17 déc. 2009 à 11:37
J'allais proposer presque la même chose. A savoir que tu arreter ton array_filter dès que la tableau de résultat avait une taille de 5. Mais cessons les raisonnements d'optimisation capillotractés.
S.
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
17 déc. 2009 à 21:27
Salut Syndrael,

L'optimisation est souvent intéressante, ne serait ce que pour accroitre ces connaissances. D'ailleurs j'ai souvent tendance à chercher, dans ce but, la p'tite bête, mais faut dire ce qui est; gagner 30 ms sur 1000 itérations, alors qu'il n'y en a que 5/6 par page, ne sert à rien.

Dans le cas présent ça me parait impossible de faire une quelconque optimisation sans connaitre le contexte :
le nombre moyen de titres joués par heure, le nombre d'appels possibles dans une même page, dans d'autres (une shoutbox à 5 titres, un div caché à 20 ...), etc ...

Si par exemple il y a 900 titres joués dans l'heure (un grand malade qui passerait les sons windows existants en boucle ), ça pourrait être intéressant de stopper le array_filter ... mais comme ça, sans réfléchir, je ne vois pas comment faire (ne plus parcourir le tableau).

Si tu as quelques minutes je serai curieux de voir ta solution.

Bonne soirée à toi (et bonne digestion si elle n'est pas terminée, moi ça sera demain )



Kohntark -
0
Rejoignez-nous