On Sat, 02 Feb 2008 16:08:38 +0100, Thomas L. Pilegaard
<dundee@worldonline.dk> wrote:
>Jeg har brug for at kunne sortere et array der består af flere arrays.
>"nøglen" der skal sorteres efter er variabel og er ikke altid den
>første variabel i subarray'et
>
>Som forsøg har ejg lavet følgende:
>
><?php
>
>function cmp($a, $b)
>{
> $i = 0;
> if ($a[$i] == $b[$i]) {
> return 0;
> }
> if ($a[$i] < $b[$i]) {
> return -1;
> }
> if ($a[$i] > $b[$i]) {
> return 1;
> }
>}
>
>$plant = array();
>
>$plant[0] = "acer, 4";
>$plant[1] = "pinus, 3";
>$plant[2] = "azalea, 5";
>$plant[3] = "rhododendron, 1";
>$plant[4] = "ceder, 2";
>
>usort($plant,"cmp");
>
>foreach($plant as $ting)
>{
> echo $ting ."<br/>";
>}
>?>
>
>
>Her sorteres fint efter navnene, men jeg skulle gerne kunne vælge at
>sortere efter numrene.
>
>ændrer jeg $i til 1 sorteres der efter 2. bogstav i navnet og ikke
>efter nummeret
>
>Det skal kunne lade sig gøre --- men hvordan ?
I eksemplet er $plant en 'almindelig' array og i din cmp()-funktion
sammenligner du to tekststrenge.
Det nemmeste, syntes jeg, vil være at du får ændet din $plant til:
$plant[0] = array("acer", 4);
$plant[1] = array("pinus", 3);
$plant[2] = array("azalea", 5);
$plant[3] = array("rhododendron", 1);
$plant[4] = array("ceder", 2);
Nu burde der blive sorteret korrekt i cmp() hvis du ændrer $i = 1
--
Mads Lie Jensen - mads@gartneriet.dk - ICQ #25478403
Gartneriet -
http://www.gartneriet.dk/