Trier un tableau en PHP

michel.leonard
WRInaute discret
WRInaute discret
 
Messages: 184
Inscription: 1 Juin 2010

Trier un tableau en PHP

Message le Mer Juin 09, 2010 14:26

Bonjour à tous, je vous expose mon léger problème,

ne m'en voulez pas si il y a (probablement une erreur).

J'ai une boucle qui va chercher 4 valeurs (associées entre elles dans ma base de données), et elle crée un tableau comme suit:

Code: Tout sélectionner
Array (
[0] => TITRE => DESCRIPTION => SOUSTITRES => NUMERO
[1] => TITRE => DESCRIPTION => SOUSTITRES => NUMERO
[2] => TITRE => DESCRIPTION => SOUSTITRES => NUMERO
et ainsi de suite )


et j'aimerai trier ce tableau par taille(en nombre de caractères) des DESCRIPTION croissantes ... en gardant les associations... evidemment...
mais la je lis toutes les fonctions PHP, j'essaye depuis du temps, mais je ne trouve pas, un coup de pouce ?

Merci de m'aider si vous le pouvez

Cordialement. Mike.


spout
WRInaute accro
WRInaute accro
 
Messages: 4382
Inscription: 14 Mai 2003

Re: Trier un tableau en PHP

Message le Mer Juin 09, 2010 14:29

http://php.net/manual/fr/function.array-multisort.php

Principalement l'exemple où il est écrit:
Nous avons un tableau de lignes, mais array_multisort() nécessite un tableau de colonnes, donc nous utilisons le code suivant pour obtenir les colonnes et ainsi effectuer le tri.


Code: Tout sélectionner
<?php
// Obtient une liste de colonnes
foreach ($data as $key => $row) {
    $volume[$key]  = $row['volume'];
    $edition[$key] = $row['edition'];
}

// Trie les données par volume décroissant, edition croissant
// Ajoute $data en tant que dernier paramètre, pour trier par la clé commune
array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);
?>


michel.leonard
WRInaute discret
WRInaute discret
 
Messages: 184
Inscription: 1 Juin 2010

Re: Trier un tableau en PHP

Message le Mer Juin 09, 2010 14:31

J'avais déjà lu cet article en plus, je vais le re-relire... Merci de me mettre sur la piste .
En fait dans l'exemple du manuel il n'y à que 2 valeurs associées, c'est probablement pour ca que je bute.
Cordialement


spout
WRInaute accro
WRInaute accro
 
Messages: 4382
Inscription: 14 Mai 2003

Re: Trier un tableau en PHP

Message le Mer Juin 09, 2010 14:35

Tu vas peut être devoir faire un foreach() sur ton tableau afin d'y ajouter un champ "description_size".

Simple exemple, je ne connais pas ton array:
Code: Tout sélectionner
foreach($array as $k => $a){
$array[$k]['description_size'] = strlen($k['description']);
}

Ou directement dans la boucle de l'exemple de php.net


YoyoS
WRInaute accro
WRInaute accro
 
Messages: 3835
Inscription: 14 Sep 2006

Re: Trier un tableau en PHP

Message le Mer Juin 09, 2010 14:37

Et pourquoi pas faire un Order by length(Description) dans ta requête qui construit ce tableau ?

michel.leonard
WRInaute discret
WRInaute discret
 
Messages: 184
Inscription: 1 Juin 2010

Re: Trier un tableau en PHP

Message le Mer Juin 09, 2010 14:43

ok , je teste, pour l'aspect pratique du sujet , je te montre mon tableau original

C'est une base de données d'ouvertures d'échecs ou ECO est un code standard , PGN est la notation standard de la partie , Titre est le nom du premier Maître à avoir joué la position et ART est le numéro de l'article que j'ai écrit a ce sujet.

Code: Tout sélectionner
$query = "SELECT *
FROM `liste_opens`
WHERE `PGN` LIKE \"%$chercher%\"";

$result = mysql_query($query);

$z = -1;
while ($row = mysql_fetch_assoc($result)) {
$z = $z+1;
$a = $row["ECO"];
$b = $row["PGN"];
$c = $row["TITRE"];
$d = $row["ART"];

$tabl[$z] = "$a => $b => $c => $d";
}


et là ... je réfléchis pour trier selon la taille de $b croissant...

(c'était pour montrer l'aspect pratique).

michel.leonard
WRInaute discret
WRInaute discret
 
Messages: 184
Inscription: 1 Juin 2010

Re: Trier un tableau en PHP

Message le Mer Juin 09, 2010 14:48

YoyoS a écrit:Et pourquoi pas faire un Order by length(Description) dans ta requête qui construit ce tableau ?


je ne connais pas encore tout, merci , je me renseigne à ce sujet, c'est agréable d'avoir des personnes qui mettent sur de bonnes pistes... amicalement

michel.leonard
WRInaute discret
WRInaute discret
 
Messages: 184
Inscription: 1 Juin 2010

Re: Trier un tableau en PHP

Message le Mer Juin 09, 2010 14:54

Code: Tout sélectionner
$query = "SELECT *
FROM `liste_opens`
WHERE `PGN` LIKE \"%$chercher%\"
Order by length(PGN)
";

et cela fonctionne...

MERCI c'était si simple...


spout
WRInaute accro
WRInaute accro
 
Messages: 4382
Inscription: 14 Mai 2003

Re: Trier un tableau en PHP

Message le Mer Juin 09, 2010 14:55

Impec, je ne savais pas que ton tableau sortait de 1 seule requête SQL :)
C'est bcp mieux ainsi


YoyoS
WRInaute accro
WRInaute accro
 
Messages: 3835
Inscription: 14 Sep 2006

Re: Trier un tableau en PHP

Message le Mer Juin 09, 2010 14:58

michel.leonard a écrit:je ne connais pas encore tout, merci ,..

Désolé je dis ptet les choses trop brutalement, ca me parait si simple. Chacun son domaine ! :mrgreen:


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités