OVH Cloud OVH Cloud

Tri de tableau

3 réponses
Avatar
Harry Cover
Bonjour à tous,

Je cherche à trier un tableau multidimensionnel qui a la forme
suivante :

array(2) {
[0]=> array(2)
{
["nom"]=> string(15) "Marcel"
["idcal"]=> string(1) "1"
}
[1]=> array(2)
{
["nom"]=> string(14) "Babette"
["idcal"]=> string(1) "6"
}
[2]=> ...
}

Le but du jeu est de trier le tableau selon le paramètre "nom".
Je pense m'en sortir à l'aide de array_multisort(), mais la doc
officielle est peu compréhensible, et l'exemple qui va avec ne
m'apporte rien.
Est ce que quelqu'un saurait m'expliquer comment me servir de la
fonction en question ? ou bien trouver une autre méthode.

Merci d'avance.

3 réponses

Avatar
Christophe PEREZ
Le Thu, 26 Feb 2004 15:49:21 +0000, Harry Cover a écrit:

Est ce que quelqu'un saurait m'expliquer comment me servir de la
fonction en question ? ou bien trouver une autre méthode.


Comme la question a déjà été posée ici, y compris par moi, sans
trouver de réponse convenable, je me permet de te dire ce que _moi_ je
fais :
tableau["nom"][0] = "Marcel"
tableau["idcal"][0] = "1"
tableau["nom"][1] = "Babette"
tableau["idcal"][1] = "6"

et je fais mon tri :
array_multisort(tableau["nom"],tableau["idcal"]);

Si quelqu'un a mieux, je reste preneur.

--
Christophe PEREZ
Écrivez moi sans _faute !

Avatar
Nicklas
Le Thu, 26 Feb 2004 15:49:21 +0000, Harry Cover a écrit :

Je cherche à trier un tableau multidimensionnel


En espérant avoir compris ce que tu voulais :

<?php
$arr = array (
0 => array (
"nom" => "Marcel",
"idcal" => "1"
),
1 => array (
"nom" => "Babette",
"idcal" => "6"
)
);


while (list ($key, $value) = each($arr)) {
$nom[$key] = $value["nom"];
$idcal[$key] = $value["idcal"];
}

print_r($arr);

array_multisort($nom, SORT_ASC, $idcal, SORT_ASC, $arr);

print_r($arr);

?>


Exemple de sortie :

[ tmp]$ php4 -q script.php
Array
(
[0] => Array
(
[nom] => Marcel
[idcal] => 1
)

[1] => Array
(
[nom] => Babette
[idcal] => 6
)

)
Array
(
[0] => Array
(
[nom] => Babette
[idcal] => 6
)

[1] => Array
(
[nom] => Marcel
[idcal] => 1
)

)


--
Nicklas
ProgWeb - Développer son site Internet
http://www.progweb.com

Avatar
Shrom
Harry Cover wrote:

Bonjour à tous,

Je cherche à trier un tableau multidimensionnel qui a la forme
suivante :

array(2) {
[0]=> array(2)
{
["nom"]=> string(15) "Marcel"
["idcal"]=> string(1) "1"
}
[1]=> array(2)
{
["nom"]=> string(14) "Babette"
["idcal"]=> string(1) "6"
}
[2]=> ...
}



<?php
$array = array(array("nom"=> "Marcel","idcal"=> "1"), array("nom"=>
"Babette","idcal"=> "6"));

function cmp($a,$b) {
if ( $a['nom'] == $b['nom'] ) {
return 0;
} else if ( $a['nom'] < $b['nom'] ) {
return -1;
} else {
return 1;
}
}

usort( $array, "cmp" );

while (list($key, $value) = each($array)) {
echo $key.':'.$value['nom']."n";
}
?>