/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Sortere et array der består af arrays
Fra : Thomas L. Pilegaard


Dato : 02-02-08 16:09

Hej

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 ?



 
 
Mads Lie Jensen (02-02-2008)
Kommentar
Fra : Mads Lie Jensen


Dato : 02-02-08 18:42

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/

Søg
Reklame
Statistik
Spørgsmål : 177459
Tips : 31964
Nyheder : 719565
Indlæg : 6408191
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste