2010-05-18 10 views
9

je une gamme de produitstableau de tri après array_count_values ​​

$products = array_count_values($products); 

maintenant j'ai un tableau où la touche $ est le numéro de produit et la valeur $ est combien fois j'ai un tel produit dans le tableau. Je veux trier ce nouveau tableau que le produit avec le moins de "doublons" sont en premier lieu, mais quoi que j'utilise (rsort, krsort, ..) j'ai perdu le numéro de produit (clé).

des suggestions?

merci.

Répondre

7

Jetez un oeil à arsort() comme une alternative à rsort() (et cette famille de fonctions). En général, la page 'Sorting arrays' sur php.net pourrait vous être utile - c'est une comparaison des fonctions de tri des tableaux de PHP en fonction de ce qu'ils trient, de la direction dans laquelle ils trient et s'ils maintiennent les clés pendant le tri.


Rappelez-vous, pour l'amour d'achèvement:

Aller par 'maintenant j'ai un tableau où la touche $ est le numéro de produit et la valeur $ est combien de fois j'ai un tel produit dans le tableau . Je veux trier ce nouveau tableau que le produit avec le moins de "doublons" sont sur la première place ', vous voulez probablement asort() (le pendentif à sort()).


Votre exemple de commentaires, en utilisant asort():

$arr = array(
    1 => 3, 
    2 => 2, 
    5 => 3, 
    9 => 1 
); 
asort($arr); 
print_r($arr); 

rendements:

Array 
(
    [9] => 1 
    [2] => 2 
    [1] => 3 
    [5] => 3 
) 
+0

Salut merci pour la réponse rapide j'ai vérifié arsort() mais ne pas retourner le résultat requis une suggestions?? – umermalik

+0

@umermalik: Je m'assure de bien comprendre ce que vous dites: Vous obtenez le résultat correct avec 'rsort()' (sauf les clés), mais pas avec 'arsort()'? – pinkgothic

+3

'arsort()' trie de * plus * à * plus bas *, mais l'OP veut de * plus bas * à * plus haut *. Donc 'asort()' est la bonne fonction à utiliser. –

3

Vous voulez utiliser asort():

Cette fonction trie un tableau de sorte que les indices du tableau maintiennent leur corrélation avec les éléments du tableau auxquels ils sont associés. Ceci est principalement utilisé lors du tri de tableaux associatifs où l'ordre réel des éléments est significatif.


rsort() était faux de la première place de toute façon (et ainsi sont toutes les autres fonctions de tri qui ont le r (pour inverse) en elle), comme il trier le tableau de le plus à le plus bas.

asort() sortes de le plus bas à le plus:

<?php 
$array = array('f'=>1, 'a'=>2, 'c'=>5); 
asort($array); 
print_r($array); 

donne

Array 
(
    [f] => 1 
    [a] => 2 
    [c] => 5 
) 

Remarque: Ces fonctions trier les tableaux en place. Ils ne renvoient pas un tableau trié. Les valeurs de retour est:

(..) TRUE sur la réussite ou l'échec FALSE sur.

+0

+1 pour une explication assez astucieuse et complète de 'asort()', plus des mises en garde. – pinkgothic

0

Vous devez utiliser la fonction PHP asort().

-1

Juste une pensée; asort - sortes croissant (croissant)

peut-être essayer

dsort - décroissant (ordre décroissant)