[PHP] Problème avec la fonction rsort

Fermé
misterned2 Messages postés 19 Date d'inscription vendredi 27 octobre 2006 Statut Membre Dernière intervention 7 novembre 2006 - 1 nov. 2006 à 12:58
misterned2 Messages postés 19 Date d'inscription vendredi 27 octobre 2006 Statut Membre Dernière intervention 7 novembre 2006 - 7 nov. 2006 à 21:59
Bonjour,

Dans un code php j'ai créé 4 tableaux : $ref_art, $titre, $auteur_art et $nb_com .
Je classe le tableau $nb_com avec rsort, ce qui fonctionne bien.
Voilà l'extrait du code en question :

rsort($nb_com);
$i = 0;
$j = 1;
while (list($cle,$val) = each ($nb_com)) {
echo "<tr><td><b>$j </b><i><a

href='$ref_art[$cle]'>".$titre[$cle]."</a></i>

de <B> $auteur_art[$cle]</B> : </td><td> --->

<b> $nb_com[$cle] </b> commentaires</td></tr>";
if ($i > 9) {
break;
}
$i++;
$j++;
}


Mais les indices $cle des trois autres tableaux ne coïncident pas avec celui du tableau $nb_com !
Pour être plus clair voici un exemple :
au début de la boucle while les trois tableaux on pour indice 0 alors que le tableau $nb_com a pour indice 238 (la valeur pour laquelle le tableau prend la plus grande valeur).

Où est le problème s'il vous plait ?
A voir également:

3 réponses

misterned2 Messages postés 19 Date d'inscription vendredi 27 octobre 2006 Statut Membre Dernière intervention 7 novembre 2006
1 nov. 2006 à 15:52
J'ai compris d'où vient l'erreur : la fonction rsort réindice le tableau de sa plus grande à sa plus petite valeur. Les indices des autres tableaux ne peuvent donc plus coïncider...
Alors comment faire ? Avec un tableau multidimensionnel ?
0
PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
4 nov. 2006 à 23:37
Bsr

As-tu essayé avec krsort() à la place du rsort() ?
0
misterned2 Messages postés 19 Date d'inscription vendredi 27 octobre 2006 Statut Membre Dernière intervention 7 novembre 2006
7 nov. 2006 à 21:59
Eh fait j'ai réglé le pb avec deux boucles for


$nb_com[] = $nbcom;
}
$max = -1;
for ($i = 1; $i < 16; ++$i)
{
for ($k = 0; $k < 2000; ++$k) {
if ($nb_com[$k] > $max) {
$max = $nb_com[$k] ;
$ind_max = $k;
}
}
$max = -1;
echo "<tr><td><b>$i </b><i><a href='$ref_art[$ind_max]'>".$titre[$ind_max]."</a></i> de <B> $auteur_art[$ind_max]</B> : </td><td> <b> $nb_com[$ind_max] </b> com</td></tr>";
$nb_com[$ind_max] = 0;


Mais je trouve ce code pas propre et couteux en mémoire. J'avais pensé à un tableau multidimensionnel mais m'en suis pas sorti. Quant à krsort j'ai pas bien pigé comment utilisé cette fonction...
Merci de m'avoir répondu en tout cas.
Et puis ce que je voulais marche : c'est déjà pas si mal...
0