| ||||||||
Astucien | Bonjour, Dans un script PHP, je lis un flux RSS, que je parse avec une fonction de la bibliothèque simplexml, que j'ai installée sur mon serveur. Ca ça marche bien. Je récupère ensuite les différentes lignes dans une variable $donnee. La date de publication de chaque ligne se trouve dans le champ (c'est comme ça qu'on dit ?) pubDate. Le flux n'étant pas toujours fourni trié par date, je récupère cette date pubDate, à laquelle j'ajoute un numéro de série, afin d'avoir un index unique pour chaque ligne du flux; ceci me donne bien une variable que j'ai nommée $index_date; je fais afficher cette variable, et elle est bien conforme à ce que j'ai programmé (ligne provisoire echo "<pre>".$index_date."</pre>"). Ensuite je me sers de cette variable comme clé d'index d'un tableau $articles, afin de stocker par $index_date le contenu du texte souhaité. Le but étant de trier ensuite ce tableau $articles par clé dans le sens inverse (dates plus récentes d'abord), avant de l'afficher. Dans l'affichage, je fais figurer provisoirement la clé, pour contrôle. Je fais ça dans la ligne : $articles[$index_date]=... C'est là que ça coince : en guise de clé du tableau, je n'ai qu'un nombre, de '0' jusqu'au nombre de lignes. Je suppose que je rate untruc gros comme un éléphant, mais je ne vois pas. Je vous mets le code, et les copies d'écran (affichage de $index_date, puis de l'index du tableau suivi du texte). Aussi, je suis très preneur de vos suggestions. Merci par avance.
| |||||||
Publicité | ||||||||
| ||||||||
Astucien ![]() | J'ai pas compris ton problème... Tout me semble correct d'après tes captures.
| |||||||
Astucien | zoulouman a écrit : Sur la capture de gauche, j'affiche le contenu de la variable $index_date, qui sert ensuite de clé pour affecter les valeurs au tableau. Sur la capture de droite, j'affiche la clé et la valeur de chaque ligne du tableau (séparées par un '|'). Et on voit que la clé vaut 0, 1, 2 ... et non 2025-01-31-1, 2025-01-31-2, 2025-01-31-3, ... Je suppose que la merdouille est dans la ligne ci-dessous, mais je ne la vois pas :
| |||||||
Astucien | Bonjour, J'ai trouvé la merdouille, c'était la ligne rsort($articles), le tri en ordre inverse du tableau. 1. rsort trie sur les valeurs, pas sur les clés. 2. rsort ne conserve pas l'association clé=>valeur, donc toutes mes clés étaient remplacées par un numéro d'ordre entier. Pour trier sur les clés, il faut une instruction PHP contenant k : ksort. Pour trier par ordre inverse, il faut une instruction PHP contenant r : rsort. Et donc le bon combo est krsort : tri sur les clés par ordre inverse. Tout est là, sous les yeux que qui veut bien voir : https://www.php.net/manual/fr/array.sorting.php Ouf ! Le problème était bien entre la chaise et le clavier | |||||||
|
Les bons plans du moment PC Astuces | Tous les Bons Plans | ||||||||||||||||||
|