IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Trier un tableau


Sujet :

Langage PHP

  1. #1
    Membre confirmé Avatar de guigo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 612
    Points : 576
    Points
    576
    Par défaut Trier un tableau
    Bonjour,
    J'arrive pas a faire fcter mon trie :-(
    Le but etant de trier via la premiere colonne puis la derniere

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    //Mon txt a trier
    162|116|produit|monimage.jpg|400|
    157|116|produit|monimage.jpg|400|
    162|670|produit|monimage.jpg|177|
    157|401|produit|monimage.jpg|200|
    157|490|produit|monimage.jpg|205|
    157|586|produit|monimage.jpg|457|
    161|23|produit|monimage.jpg|201|
    162|483|produit|monimage.jpg|198|
    162|490|produit|monimage.jpg|205|
    162|670|produit|monimage.jpg|177|
     
     
    //mon fichier php
    $Tab=file($GoFile);
    foreach ($Tab as $key => $Row) {
            $Chps=explode("|",$Row); $Data[$key]=array($Chps[0],$Chps[1],$Chps[2],$Chps[3],$Chps[4],$Chps[5]);
    	$IdA[$key]  = $Chps[0];
    	$WImg[$key] = $Chps[4];
    }
    	array_multisort($IdA, SORT_ASC, $WImg, SORT_ASC, $Data);

    Il me fait l'erreur :
    Warning: array_multisort(): Argument #1 is expected to be an array or a sort flag


    Je comprend pas :-( (c'est peut etre qu'il est trop tard, mais ca me gonfle...)

    Merci,
    Guigo

  2. #2
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Bonjour,

    Vue comme celà, ton tri a l'air bon sauf une chose que je comprends pas ...

    Tu as peut être un problème de retour chariot ? qui se trouve dans ton 6ème champ.

    Et un print_r de tab donne quoi ?

  3. #3
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Le problème d'array_multi_sort, c'est qu'il trie par ligne...
    peut-être une piste :
    Trier un tableau sur ses 2e et 3e colonnes

  4. #4
    Membre confirmé Avatar de guigo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 612
    Points : 576
    Points
    576
    Par défaut
    Je test en fin d'aprem et vous tiens au courant....
    Merci de vos reponses

  5. #5
    Membre confirmé Avatar de guigo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 612
    Points : 576
    Points
    576
    Par défaut
    J'ai donc opté pour ta technique Celira...
    Mais il reste un pb que je ne comprend tjs pas !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
     
    //fonction qui genere mon tab a trier (issus du fichier txt precedent)
    $Tab=file($GoFile);//print_r($Tab);
    foreach ($Tab as $key => $Row) {
    		$Chps=explode("|",$Row); //echo $Chps[0]."--";
    		$Data[] =array($Chps[0],$Chps[1],$Chps[2],$Chps[3],$Chps[4]);
     
    }
    	print_r($Data); //Voir resultat en dessous
    	usort($Data, "cmp1");
     
     
    //resultat print_r($Data);
    Array ( 
    	[0] => Array ( [0] => 157 [1] => 116 [2] => NomProd [3] => MonImg.jpg [4] => 400 ) 
    		[1] => Array ( [0] => 157 [1] => 401 [2] => NomProd [3] => MonImg.jpg [4] => 200 ) 
    		[2] => Array ( [0] => 157 [1] => 490 [2] =>NomProd [3] => MonImg.jpg [4] => 205 ) 
    		[3] => Array ( [0] => 157 [1] => 586 [2] => NomProd [3] => MonImg.jpg [4] => 457 ) 
    		[4] => Array ( [0] => 161 [1] => 23 [2] => NomProd [3] => MonImg.jpg [4] => 201 ) 
    		[5] => Array ( [0] => 162 [1] => 116 [2] => NomProd [3] => MonImg.jpg [4] => 400 ) 
    		[6] => Array ( [0] => 162 [1] => 483 [2] => NomProd [3] => MonImg.jpg [4] => 198 ) 
    		[7] => Array ( [0] => 162 [1] => 490 [2] => NomProd [3] => MonImg.jpg [4] => 205 ) 
    		[8] => Array ( [0] => 162 [1] => 670 [2] => NomProd [3] => MonImg.jpg [4] => 177 ) 
    	)
     
    //A priori j'ai bien un tableau de la meme forme que ton lien 
    $tab = array(array(5,6,2),array(3,7,1),array(1,5,9),array(3,8,8),array(1,2,3),array(7,4,4),array(4,2,10));
    J'ai l'erreur :
    Warning: usort(): The argument should be an array


    Une idée ???

  6. #6
    Membre confirmé Avatar de guigo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 612
    Points : 576
    Points
    576
    Par défaut
    Ouf sauvé....
    Alors la mega technique de la mort :
    NE PAS OUBLIER DE DECLARER LA VARIABLE COMME UN TABLEAU !!!

    $Data=array();


    What else !


    Merci a vous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Trier un tableau en 2 boucles
    Par SaladinDev dans le forum Assembleur
    Réponses: 9
    Dernier message: 07/05/2005, 23h38
  2. Trier un tableau par rapport à un autre tableau
    Par deaven dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 02/05/2005, 10h27
  3. [Débutant] Remplir et trier un tableau
    Par james-dean dans le forum Assembleur
    Réponses: 15
    Dernier message: 01/05/2005, 18h40
  4. Trier un tableau par ordre croissant
    Par Halleck dans le forum Algorithmes et structures de données
    Réponses: 15
    Dernier message: 01/11/2004, 01h04
  5. trier un tableau et compter des elements du tableau
    Par remi51 dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 17/06/2002, 17h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo