par
Hywan » 24 juil. 2007, 11:29
Salut
Tu as plusieurs solutions pour trier ton tableau.
Soit tu revois l'architecture, de façon à avoir quelques choses qui ressemble à ça :
Code : Tout sélectionner
Array (
country_name => Array (
0 => Russia,
1 => Australia,
2 => Austria
),
b_nau_com => Array (
0 => null,
1 => 1,
2 => 1
)
)
Dans ce cas, tu n'auras pas de problème. Tu tries simplement :
sort($array['country_name'], SORT_STRING);
Et tu retrouveras toutes tes données par association de clés.
Ou alors, si tu ne veux pas toucher à la structure, il y a une possibilité, mais c'est un peu plus compliqué. Ce système à l'avantage de pouvoir faire beaucoup de tries sur plusieurs données en même temps (même des inversions de tries etc.) :
<?php
header('content-type: text/plain');
// Ton tableau de base, on n'a pas touché à l'architecture.
$array = array(
0 => array('country_name' => 'Russia'),
1 => array('country_name' => 'Australia',
'b_nau_com' => 1),
2 => array('country_name' => 'Austria',
'b_nau_com' => 1)
);
// On prépare les 2 variables.
// Sort est celle qui va avoir les noms des pays triés.
$sort = array();
// Return est celle qui va contenir le résultat : ton tableau trié.
$return = array();
// On récupère tous les noms des pays dans le tableau sort.
foreach($array as $i => $value)
$sort[] = $value['country_name'];
// On trie ce tableau sans modifier les clés.
// C'est le but de la fonction asort.
asort($sort, SORT_STRING);
// Par association de clés, on reconstruit ton tableau trié.
foreach($sort as $i => $foo)
$return[] = $array[$i];
print_r($sort);
print_r($array);
print_r($return);
Ton résultat sera ($return) :
Code : Tout sélectionner
Array
(
[0] => Array
(
[country_name] => Australia
[b_nau_com] => 1
)
[1] => Array
(
[country_name] => Austria
[b_nau_com] => 1
)
[2] => Array
(
[country_name] => Russia
)
)
Explore bien les fonctions de trie, il y en a beaucoup, et sont puissantes. Ici, je t'ai introduit la fonction asort(), qui permet de trier sans toucher aux clés. On voit l'avantage rapidement : on ne trie qu'une partie, on récupère les clés, et on reconstruit le tableau par association de clés.
C'est une méthode parmi tant d'autres. Je ne sais pas si c'est la meilleur, mais elle est rapide à concevoir
Edit : ou tu peux utiliser usort .... Je l'avais oublié celle là

.
(La guerre est déclarée
)
Salut :)
Tu as plusieurs solutions pour trier ton tableau.
Soit tu revois l'architecture, de façon à avoir quelques choses qui ressemble à ça :
[code]Array (
country_name => Array (
0 => Russia,
1 => Australia,
2 => Austria
),
b_nau_com => Array (
0 => null,
1 => 1,
2 => 1
)
)[/code]
Dans ce cas, tu n'auras pas de problème. Tu tries simplement :
[php]sort($array['country_name'], SORT_STRING);[/php]
Et tu retrouveras toutes tes données par association de clés.
Ou alors, si tu ne veux pas toucher à la structure, il y a une possibilité, mais c'est un peu plus compliqué. Ce système à l'avantage de pouvoir faire beaucoup de tries sur plusieurs données en même temps (même des inversions de tries etc.) :
[php]<?php
header('content-type: text/plain');
// Ton tableau de base, on n'a pas touché à l'architecture.
$array = array(
0 => array('country_name' => 'Russia'),
1 => array('country_name' => 'Australia',
'b_nau_com' => 1),
2 => array('country_name' => 'Austria',
'b_nau_com' => 1)
);
// On prépare les 2 variables.
// Sort est celle qui va avoir les noms des pays triés.
$sort = array();
// Return est celle qui va contenir le résultat : ton tableau trié.
$return = array();
// On récupère tous les noms des pays dans le tableau sort.
foreach($array as $i => $value)
$sort[] = $value['country_name'];
// On trie ce tableau sans modifier les clés.
// C'est le but de la fonction asort.
asort($sort, SORT_STRING);
// Par association de clés, on reconstruit ton tableau trié.
foreach($sort as $i => $foo)
$return[] = $array[$i];
print_r($sort);
print_r($array);
print_r($return);[/php]
Ton résultat sera ($return) :
[code]Array
(
[0] => Array
(
[country_name] => Australia
[b_nau_com] => 1
)
[1] => Array
(
[country_name] => Austria
[b_nau_com] => 1
)
[2] => Array
(
[country_name] => Russia
)
)[/code]
Explore bien les fonctions de trie, il y en a beaucoup, et sont puissantes. Ici, je t'ai introduit la fonction asort(), qui permet de trier sans toucher aux clés. On voit l'avantage rapidement : on ne trie qu'une partie, on récupère les clés, et on reconstruit le tableau par association de clés.
C'est une méthode parmi tant d'autres. Je ne sais pas si c'est la meilleur, mais elle est rapide à concevoir :P
Edit : ou tu peux utiliser usort .... Je l'avais oublié celle là :cry:. [size=59](La guerre est déclarée ;-))[/size]