Rapide Advanced Adulte
 
 Web|Image|Shop|Video|News|Wmx|Mobile|Wiki|Ajouter ce moteur

     Manuel PHP     
Partager
 
 
Partager
Partager

 

Table :

.array change key case
.array chunk
.array combine
.array count values
.array diff assoc
.array diff key
.array diff uassoc
.array diff ukey
.array diff
.array fill keys
.array fill
.array filter
.array flip
.array intersect assoc
.array intersect key
.array intersect uassoc
.array intersect ukey
.array intersect
.array key exists
.array keys
.array map
.array merge recursive
.array merge
.array multisort
.array pad
.array pop
.array product
.array push
.array rand
.array reduce
.array reverse
.array search
.array shift
.array slice
.array splice
.array sum
.array udiff assoc
.array udiff uassoc
.array udiff
.array uintersect assoc
.array uintersect uassoc
.array uintersect
.array unique
.array unshift
.array values
.array walk recursive
.array walk
.array
.arsort
.asort
.compact
.count
.current
.each
.end
.extract
.in array
.key
.krsort
.ksort
.list
.natcasesort
.natsort
.next
.pos
.current()
.prev
.range
.reset
.rsort
.shuffle
.sizeof
.count()
.sort
.uasort
.uksort
.usort
 
   

  array_multisort  


array_multisort

(PHP 4, PHP 5)

array_multisort -- Trie multi-dimensionnel de tableaux

Description

bool array_multisort ( array ar1 [, mixed arg [, mixed ... [, array ...]]] )

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

array_multisort() sert à trier simultanément plusieurs tableaux, ou bien à trier un tableau multi-dimensionnel, suivant l'une ou l'autre de ses dimensions.

Les clés associatives (chaîne de caractères) seront maintenues, mais les clés numériques seront réindexées.

Les tableaux passés en arguments ar1, arg, ... sont traités comme les colonnes d'une table, triées par lignes (un peu comme la clause SQL ORDER BY). Le premier tableau est la clé primaire de tri. Les valeurs du premier tableau qui sont égales, sont triées grâce au tableau suivant, et ainsi de suite...

La structure des arguments de array_multisort() est un peu inhabituelle, mais elle est plus souple. Le premier argument doit être un tableau. Par la suite, chaque argument peut être soit un tableau, soit une option de tri prise parmi les valeurs suivantes :

Options de tri :

  • SORT_ASC : Tri en ordre ascendant

  • SORT_DESC : Tri en ordre descendant

Options de type de tri :

  • SORT_REGULAR : comparaison normale des valeurs

  • SORT_NUMERIC : comparaison numérique des valeurs

  • SORT_STRING : Comparaison alphabétique des valeurs

Une seule option de tri de chaque type peut être appliquée après un tableau. Une option ne s'applique qu'au tableau précédent. Toutes les autres sont mises par défaut à SORT_ASC et SORT_REGULAR.

Exemple 1. Trier plusieurs tableaux

<?php
$ar1
= array("10", 100, 100, "a");
$ar2 = array(1, 3, "2", 1);
array_multisort($ar1, $ar2);

var_dump($ar1);
var_dump($ar2);
?>

Dans cet exemple, après le tri, le premier tableau contient 10, "a", 100, 100. Le deuxième tableau contient 1, 1, "2", 3. Les entrées du second tableau correspondant aux valeurs jumelles du premier tableau (100 et 100), sont aussi triées.

array(4) {
  [0]=> string(2) "10"
  [1]=> string(1) "a"
  [2]=> int(100)
  [3]=> int(100)
}
array(4) {
  [0]=> int(1)
  [1]=> int(1)
  [2]=> string(1) "2"
  [3]=> int(3)
}

Exemple 2. Classer un tableau multi-dimensionnel

<?php
$ar
= array(
       array(
"10", 11, 100, 100, "a"),
       array(   
1,  2, "2",   3,   1)
      );
array_multisort($ar[0], SORT_ASC, SORT_STRING,
                
$ar[1], SORT_NUMERIC, SORT_DESC);
var_dump($ar);
?>

Dans cet exemple, après le tri, le premier tableau contient 10, 100, 100, 11, "a" (tri alphabétique, ordre croissant); Le deuxième tableau contient 1, 3, "2", 2, 1 (tri numérique, ordre décroissant).

array(2) {
  [0]=> array(5) {
    [0]=> string(2) "10"
    [1]=> int(100)
    [2]=> int(100)
    [3]=> int(11)
    [4]=> string(1) "a"
  }
  [1]=> array(5) {
    [0]=> int(1)
    [1]=> int(3)
    [2]=> string(1) "2"
    [3]=> int(2)
    [4]=> int(1)
  }
}

Exemple 3. Classer les résultats d'une base de données

Dans cet exemple, chaque élément du tableau data représente une ligne de la table. Ce type de données est typique d'un enregistrement de base de données.

Exemple de données :

volume | edition
-------+--------
    67 |       2
    86 |       1
    85 |       6
    98 |       2
    86 |       6
    67 |       7

Les données sont sous forme de tableau, appelé data. Cela est généralement le résultat, par exemple, de la fonction mysql_fetch_assoc().

<?php
$data
[] = array('volume' => 67, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 1);
$data[] = array('volume' => 85, 'edition' => 6);
$data[] = array('volume' => 98, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 6);
$data[] = array('volume' => 67, 'edition' => 7);
?>

Dans cet exemple, nous allons trier la colonne volume par ordre décroissant, et la colonne edition par ordre croissant.

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.

<?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);
?>

L'enregistrement est maintenant trié et ressemble à cela :

volume | edition
-------+--------
    98 |       2
    86 |       1
    86 |       6
    85 |       6
    67 |       2
    67 |       7

Exemple 4. Tri non sensible à la casse

SORT_STRING et SORT_REGULAR sont sensibles à la casse, les chaînes de caractères commençant avec une lettre en majuscule viendront avant les chaînes de caractères commençant par une lettre en minuscule.

Pour effectuer une recherche insensible à la casse, effectuez le tri sur une copie minuscule des colonnes du tableau original.

<?php
$array
= array('Alpha', 'atomic', 'Beta', 'bank');
$array_lowercase = array_map('strtolower', $array);

array_multisort($array_lowercase, SORT_ASC, SORT_STRING, $array);

print_r($array);
?>

L'exemple ci-dessus va afficher :

Array
(
    [0] => Alpha
    [1] => atomic
    [2] => bank
    [3] => Beta
)


    Annonces       
 

 Retour au chapitre Php

 

Top
 

Ajouter JungleKey.fr à votre Explorateur

 
 

About Us | © 2007 JungleKey




iBlack | Mobile | Wiki | Ajouter ce moteur
.