J'ai un tableau avec une série d'ID d'événement organisés comme suit: $ event ['year'] ['month'] ['day'] = $ event_id (structure complète ci-dessous).PHP Retour Section d'un tableau multidimensionnel
Fondamentalement, je veux sortir les 5 prochains événements (ou plus) d'une date donnée (comme aujourd'hui).
J'ai passé en revue le manuel PHP, mais je n'ai pas trouvé de solution appropriée. Je suppose que je pourrais juste parcourir chaque étape, mais il pourrait y avoir des centaines d'événements. Si je connaissais le décalage, je pourrais utiliser array_slice, mais je ne suis pas sûr de savoir comment obtenir le décalage sans boucler tout le tableau. Si je pouvais définir le pointeur, alors je passerais juste à travers. Mais je comprends qu'il n'y a pas moyen de définir un pointeur dans un tableau PHP.
Une requête MySQL spécifique n'est pas très faisable non plus puisque les données ne sont pas bien organisées (c'est l'utilisation de clés méta dans une base de données Wordpress). Je devrais probablement utiliser un certain nombre de JOINs, donc je pense que le coup de performance serait mauvais.
Compte tenu de l'année en cours, le mois et le jour (par exemple $ événement [année $] [mois $] [$ jour], je veux juste montrer les 5 prochains événements.
La structure ressemble à ceci :
Array
(
[2010] => Array
(
[1] => Array
(
[1] => Array
(
[594] => "Event"
)
)
[2] => Array
(
[1] => Array
(
[592] => "Event",
[524] => "Event"
)
[2] => Array
(
[580] => "Event"
)
[2011] => Array
(
[1] => Array
(
[1] => Array
(
[587] => "Event"
)
)
)
)
pensées Désolé si cette description est un peu compliqué Merci
Edit:?.! Typos
Charles, merci pour la réponse! Oui, c'est ce que je pensais faire. Malheureusement, je crains qu'une telle méthode ait un impact sur les performances du site (cela s'affichera sur la page d'accueil). Peut-être que la solution consiste à faire cela et à mettre en cache le résultat. – Darren
Pouvez-vous nous en dire plus sur ce qui génère le tableau dans ce format? Idéalement, votre meilleure solution limiterait la plage de dates qui va dans le tableau pour commencer. – Charles
Bien sûr, le code est ici: http://pastebin.com/YhpXWaAK J'ai pensé à simplement ajouter un if/then pour vérifier si la date donnée est antérieure à la date de l'événement et la filtrer. Cependant, cela nécessite encore une boucle à travers tous les événements de la base de données (pire, je pense, car cela a beaucoup de requêtes de base de données). Ce site n'obtient pas d'énormes quantités de trafic (il s'agit d'un site intranet), donc peut-être que l'impact sur les performances des boucles foreach imbriquées dans votre exemple de code ne sera pas si grave? – Darren