Tableau multidimensionnel [PHP] - Programmation
Marsh Posté le 15-05-2001 à 12:01:56
? tu devrais pas passer par des variable avant !
$x=tab
..
array_mustisort($x,$y)
Marsh Posté le 15-05-2001 à 12:03:36
Il est où ton tableau multidimentionnel ?
Marsh Posté le 15-05-2001 à 12:08:44
Désolé, voici le code:
$tableau=array();
for(...){
$tableau[$ligne][$nbredonnee]=$data;
}
array_multisort($tableau[1],$tableau[0]);
Sachant que j'arrive à afficher le contenu :
for($i=1;$i<$effectif;$i++){
echo $tableau[$i][0].",".$tableau[$i][1];
print("\n" );
}
Marsh Posté le 15-05-2001 à 12:41:01
Dans ton cas, $tableau[0] est la première "ligne" du tableau, $tableau[1], la deuxime, etc...
Genre:
Code :
|
Essaye plutôt un tableau avec 2 lignes et autant de colonnes que de données :
Code :
|
Marsh Posté le 15-05-2001 à 14:08:16
J'ai besoin d'un tableau à n lignes($ligne) et m colonnes ($nbredonnées).
En fait ma boucle marche comme ça :
$tableau[$ligne][$nbredonnées]=$data1;
$tableau[$ligne][$nbredonnées+1]=$data2;
$tableau[$ligne+1][$nbredonnées]=$data3;
$tableau[$ligne+2][$nbredonnées]=$data4;
Ce qui donne:
$nbredonnées $nbredonnées+1 ...
$ligne $data1 $data2
$ligne+1 $data3 $data4
...
Et ensuite je souhaite trier ce tableau en fonction de la colonne $nbredonnées+1.
J'espère que ça éclairçit un peu le pb?
Marsh Posté le 15-05-2001 à 14:42:28
Désolé, mais pour moi :
$tableau[$ligne][$nbredonnées]=$data1;
$tableau[$ligne][$nbredonnées+1]=$data2;
$tableau[$ligne+1][$nbredonnées]=$data3;
$tableau[$ligne+2][$nbredonnées]=$data4;
donne:
Code :
|
Marsh Posté le 15-05-2001 à 14:57:25
Mara's dad
J'ai l'impression qu'on est d'accord ou alors il ya un décalage dans ton dernier message, ou alors je ne vois pas la différence?
Marsh Posté le 15-05-2001 à 15:10:14
Bon, ben, heu, là je sais pas quoi dire...
Sinon qu'y manque des données dans la colonne $nbredonnées+1...
Sans doute une erreur, mais faut être sûr, quoi ;-)
Marsh Posté le 15-05-2001 à 15:24:05
Ha ok, désolé j'avais pas relu mon message et donc pas vu l'erreur, je rectifie:
$tableau[$ligne][$nbredonnées]=$data1;
$tableau[$ligne][$nbredonnées+1]=$data2;
$tableau[$ligne+1][$nbredonnées]=$data3;
$tableau[$ligne+1][$nbredonnées+1]=$data4;
$tableau[$ligne+2][$nbredonnées]=$data5;
$tableau[$ligne+2][$nbredonnées+1]=$data6;
...
$tableau[$ligne+n][$nbredonnées]=$datax;
$tableau[$ligne+n][$nbredonnées+1]=$datay;
$nbredonnées $nbredonnées+1 ....
$ligne $data1 $data2
$ligne+1 $data3 $data4
$ligne+2 $data5 $data6
...
$ligne+n $dataX $dataY
Je souhaite garder cette structure car je ne connais pas n à l'avance et il peut aussi y avoir plus de 2 colonnes.
Je souhaite trier sur la colonne $nbredonnées+1?
Merci pour votre aide (surtout Mara's dad)
Marsh Posté le 15-05-2001 à 16:07:09
Je continue de penser que la fonction array_multisort() n'est pas la solution de ton problème.
Il y a une solution générale pour trier un tableau comme on veut avec usort().
Exemple :
Code :
|
Et voilà le Résultat :
Code :
|
Je pense qu'avec cette méthode, on peut se sortir de toutes les situations !
Marsh Posté le 15-05-2001 à 16:41:12
Merci pour cet exemple, je m'en vais l'essayer.
Je pense par ailleurs que multisort sert à trier des tableaux séparés ou un tableau multidimensionnel (c'est à dire soit par rapport aux lignes, soit par rapport aux colonnes et non pas par rapport à une certaine colonne ou une certaine ligne)
Merci je te tiens au courant pour ta solution!
Marsh Posté le 15-05-2001 à 17:06:20
Merci, merci, ça marche d'enfer!
Vive les forums et vive Mara's dad!
Marsh Posté le 15-05-2001 à 11:57:20
Voilà, je remplit un tableau multidimensionnel:
tab est déclaré comme ceci: tab=array();
(je ne sais pas à l'avance combien de colonne il va posséder)
exemple:
tab[0],tab[1]:
35331,2087
35332,793
35333,1146
35334,6425
Ensuite, je veut le trier selon la deuxième colonne:
array_multisort(tab[1],tab[0]);
Mais je reçoit un message comme quoi le paramètre 2 n'est pas un tableau:
Argument 2 to array_multisort() is expected to be an array or a sort flag
Et le tableau n'est pas trié?
Je vois pas en quoi mon exemple diffère de celui de la doc??
Si vous avez une idée, je suis preneur!