7
votes

Tri de tri personnalisé de tableaux en utilisant deux conditions

J'ai le tableau suivant: xxx

et je veux trier cela de sorte que cela ressemble à ceci: xxx

si fondamentalement je besoin de commander par produit_id et user_id de telle manière qu'il sélectionne le nombre inférieur product_id de chaque utilisateur avant de passer à la suivante.

J'ai essayé d'utiliser USort mais je ne pouvais pas le faire fonctionner. xxx

J'ai également essayé array_multisort < / Code> Mais tout ce que je pouvais obtenir, c'est de commander en utilisant le même ordre que je récupère déjà de la base de données.


2 commentaires

votre code avec USort est incorrect; Vous devez comparer à << / code> / > par premier champ, et uniquement si les premiers champs sont égaux à comparer par seconde.


Vous dites que vous récupérez de base de données, une raison pour laquelle vous ne triez pas directement sur la requête?


3 Réponses :


3
votes

L'hypothèse est que vos valeurs sont des entiers: xxx


Vous pouvez également utiliser la commande de la base de données avec commander par produit_id, user_id clause. < / p>


0 commentaires

1
votes
 Array
(
    [0] => Array
        (
            [user_id] => 1
            [product_id] => 1
        )

    [1] => Array
        (
            [user_id] => 2
            [product_id] => 1
        )

    [2] => Array
        (
            [user_id] => 3
            [product_id] => 1
        )

    [3] => Array
        (
            [user_id] => 1
            [product_id] => 2
        )

    [4] => Array
        (
            [user_id] => 2
            [product_id] => 2
        )

    [5] => Array
        (
            [user_id] => 1
            [product_id] => 3
        )

)

4 commentaires

Votre sortie n'est pas la même que celle attendue de l'OP. Votre commentaire sur la vérification de votre réponse est un bruit complet et inutile.


Tandis que cet extrait de code peut résoudre la question, y compris une explication aide vraiment à améliorer la qualité de votre message. N'oubliez pas que vous répondez à la question des lecteurs à l'avenir, et ces personnes pourraient ne pas connaître les raisons de votre suggestion de code. Essayez également de ne pas fouler votre code avec des commentaires explicatifs, cela réduit la lisibilité du code et des explications!


S'il vous plaît vérifier mon code modifié. J'ai juste oublié de chérer $ userarray et $ productarray dans Multisort. J'ai modifié le code et la sortie est également enregistrée dans l'éditeur de suivi ci-dessous. Je ne suis pas génial et expert comme vous, mais je fais de mon mieux pour donner une réponse utile à l'utilisateur. @ Rizier123


Désolé pour la gêne occasionnée pour cette réponse car j'ai attaché une sortie sans vérifier sa faute. L'erreur a été interchangeée de la matrice dans Array_Multisort ($ CréditArray, Sort_asc, $ userarray, sort_asc, $ arratrie); @ Rizier123



2
votes

solution à l'aide de array_multisort fonction avec "tableau de colonnes" (peu de dimensions de tri): xxx

la sortie: xxx


0 commentaires