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

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

Votre réponse

10 réponses

Meilleure réponse
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Dernière intervention
27 avril 2012
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é 91 internautes ce mois-ci

Commenter la réponse de kohntark
Messages postés
2382
Date d'inscription
lundi 4 février 2002
Dernière intervention
29 décembre 2012
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
Messages postés
2382
Date d'inscription
lundi 4 février 2002
Dernière intervention
29 décembre 2012
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
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Dernière intervention
27 avril 2012
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
Messages postés
2382
Date d'inscription
lundi 4 février 2002
Dernière intervention
29 décembre 2012
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
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Dernière intervention
27 avril 2012
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.