/ 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
sortering af array
Fra : Martin


Dato : 24-05-06 18:36

Hej

Nu har jeg prøvet stortset alle sort funktioner fra manualen (samt en
del af brugerenes) men ingen har den ønskede effekt, så nu bliver det
her

Nedenstående array skal først sorteres efter [3] (DESC) og bagefter [1]
(ASC)

Mine arrays har ingen keys (altså med navn), så jeg har kun tallet at gå
udfra. Dvs mit array IKKE ser sådan her ud
array("felt1"=>4200,"felt2"=>1000);
men sådan her ser det ud
array(4200,1000);


Herunder kommer mit array.

Håber på en lækker løsning. Det er ikke første gang jeg har haft
problemer med at sortere et array, så dette er ligeså meget til
fremtidig brug :)


Mit array ser noget ala sådan her ud (alt unødvendigt er skåret væk)

Array
(
[0] => Array
(
[1] => Forhandlernavn 4
...
[3] => 4200
...
)

[1] => Array
(
[1] => Forhandlernavn 3
...
[3] => 4800
...
)

[2] => Array
(
[1] => Forhandlernavn 2
...
[3] => 4300
...
)

[3] => Array
(
[1] => Forhandlernavn 1
...
[3] => 4000
...
)
)

 
 
Jacob Atzen (24-05-2006)
Kommentar
Fra : Jacob Atzen


Dato : 24-05-06 18:38

On 2006-05-24, Martin <maa@scandesigns.dk> wrote:
> Hej
>
> Nu har jeg prøvet stortset alle sort funktioner fra manualen (samt en
> del af brugerenes) men ingen har den ønskede effekt, så nu bliver det
> her

Har du kigget på array_multisort() og usort()?

--
Med venlig hilsen
- Jacob Atzen

Martin (24-05-2006)
Kommentar
Fra : Martin


Dato : 24-05-06 18:43

Jacob Atzen wrote:
> Har du kigget på array_multisort() og usort()?

Jeps det har jeg.

array_multisort() den kræver jo 2 forskllige arrays, men jeg har kun 1.
Jeg har ikke rigtig kunne tyde meningen med den helt præcist, så hvis
der måske er en der kan forklare mig funktionen i Clevin detajler, så
kunne det jo være det hjalp :)


Jacob Atzen (24-05-2006)
Kommentar
Fra : Jacob Atzen


Dato : 24-05-06 18:49

On 2006-05-24, Martin <maa@scandesigns.dk> wrote:
> Jacob Atzen wrote:
>> Har du kigget på array_multisort() og usort()?
>
> Jeps det har jeg.
>
> array_multisort() den kræver jo 2 forskllige arrays, men jeg har kun 1.
> Jeg har ikke rigtig kunne tyde meningen med den helt præcist, så hvis
> der måske er en der kan forklare mig funktionen i Clevin detajler, så
> kunne det jo være det hjalp :)

Følgende stump burde klare det:

function myCmp($a, $b) {
if($a[3] > $b[3]) {
return -1;
}
if($a[3] < $b[3]) {
return 1;
}
if($a[1] > $b[1]) {
return 1;
}
if($a[1] < $b[1]) {
return -1;
}
return 0;
}

usort($array, "myCmp");

--
Med venlig hilsen
- Jacob Atzen

Martin (24-05-2006)
Kommentar
Fra : Martin


Dato : 24-05-06 18:59

Jacob Atzen wrote:
> Følgende stump burde klare det:
>
> function myCmp($a, $b) {
> if($a[3] > $b[3]) {
> return -1;
> }
> if($a[3] < $b[3]) {
> return 1;
> }
> if($a[1] > $b[1]) {
> return 1;
> }
> if($a[1] < $b[1]) {
> return -1;
> }
> return 0;
> }
>
> usort($array, "myCmp");

Aha. Det virker jo bare supert, dog skulle jeg lige ændre -1 til 1 og 1
til -1 under [3] if'erne.

Men jeg må indrømme at jeg tror at jeg har fundet ud af at bruge
usort(), eller rettere, skal da lige hjem og lege med det efter arbejde her.

Men altså -1/1 trækker/ligger bare en fra/til af feltets position i arrayet.
Svært at forklare, men er det nogenlunde sådan det skal forstås?

Jacob Atzen (24-05-2006)
Kommentar
Fra : Jacob Atzen


Dato : 24-05-06 21:09

On 2006-05-24, Martin <maa@scandesigns.dk> wrote:
> Men altså -1/1 trækker/ligger bare en fra/til af feltets position i
> arrayet. Svært at forklare, men er det nogenlunde sådan det skal
> forstås?

Fra manualen:

The comparison function must return an integer less than, equal
to, or greater than zero if the first argument is considered to
be respectively less than, equal to, or greater than the second.

--
Med venlig hilsen
- Jacob Atzen

Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste