L'heure la plus proche dans un array [Résolu]

Utilisateur anonyme - 16 déc. 2009 à 11:25 - Dernière réponse : kohntark 3708 Messages postés lundi 5 juillet 2004Date d'inscription 27 avril 2012 Dernière intervention
- 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++
Afficher la suite 

Votre réponse

10 réponses

Meilleure réponse
kohntark 3708 Messages postés lundi 5 juillet 2004Date d'inscription 27 avril 2012 Dernière intervention - 17 déc. 2009 à 08:47
3
Merci
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 -

Merci kohntark 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de kohntark
syndrael 2382 Messages postés lundi 4 février 2002Date d'inscription 29 décembre 2012 Dernière intervention - 16 déc. 2009 à 13:29
0
Merci
Tu passes par PHP, ou MySQL ?
S.
Commenter la réponse de syndrael
0
Merci
C'est contenu dans un Array en PHP

A++
Commenter la réponse de Utilisateur anonyme
syndrael 2382 Messages postés lundi 4 février 2002Date d'inscription 29 décembre 2012 Dernière intervention - 16 déc. 2009 à 15:44
0
Merci
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.
Commenter la réponse de syndrael
0
Merci
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++
Commenter la réponse de Utilisateur anonyme
kohntark 3708 Messages postés lundi 5 juillet 2004Date d'inscription 27 avril 2012 Dernière intervention - 16 déc. 2009 à 20:50
0
Merci
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 -
Commenter la réponse de kohntark
0
Merci
C'est exactement ca !
je reprend les données d'un xml


A++
Commenter la réponse de Utilisateur anonyme
0
Merci
C'est exactement ca :)

Merci beaucoup !

A++
Commenter la réponse de Utilisateur anonyme
syndrael 2382 Messages postés lundi 4 février 2002Date d'inscription 29 décembre 2012 Dernière intervention - 17 déc. 2009 à 11:37
0
Merci
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.
Commenter la réponse de syndrael
kohntark 3708 Messages postés lundi 5 juillet 2004Date d'inscription 27 avril 2012 Dernière intervention - 17 déc. 2009 à 21:27
0
Merci
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 -
Commenter la réponse de kohntark

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.