[PHP] Problème avec la fonction rsort

misterned2 Messages postés 19 Statut Membre -  
misterned2 Messages postés 19 Statut Membre -
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 ?

3 réponses

  1. misterned2 Messages postés 19 Statut Membre
     
    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
  2. PhP Messages postés 1774 Statut Membre 606
     
    Bsr

    As-tu essayé avec krsort() à la place du rsort() ?
    0
  3. misterned2 Messages postés 19 Statut Membre
     
    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