/ 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
Problemer med sortering af variabel-værdie~
Fra : Ace


Dato : 07-07-11 08:26

Hejsa

Jeg ønsker at sortere mine tal-værdier, som jeg har i nogle
variabler, igennem en array. Sorteringen skal være fra høj til
lav.

De enkelte værdier skal i øvrigt "kobles" til nogle forskellige
navne.

Uden at vide særligt meget om array's, havde jeg egentlig
forestillet mig, at man bare kunne gøre noget i retning af dette:

<?php
$chris = '67';
$christopher = '125';
$farshad = '122';
$jakob = '56';
$mathias = 123';
$sandra = '69';
$steffen = '111';

$sellers = array('Chris' => $chris, 'Christopher' =>
$christopher, 'Farshad' => $farshad, 'Jakob' => $jakob, 'Mathias'
=> $mathias, 'Sandra' => $sandra, 'Steffen' => $steffen);

rsort($sellers);
echo $sellers;
?>

Det skal forresten lige hurtig tilføjes, at tal-værdierne i
variablerne, ikke bliver tastet manuelt, men derimod bliver
"hentet" fra en anden side.

Jeg ved godt at ovenstående script er helt ude i skoven, men
håber at der er nogen som kan se hvor jeg vil hen med det, og
evt. kan hjælpe mig med, at få scriptet omskrevet så det fungerer
efter hensigt.


Venligst
Ace

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Bertel Lund Hansen (07-07-2011)
Kommentar
Fra : Bertel Lund Hansen


Dato : 07-07-11 08:49

Ace skrev:

> Uden at vide særligt meget om array's, havde jeg egentlig
> forestillet mig, at man bare kunne gøre noget i retning af dette:

> <?php
> $chris = '67';
> $christopher = '125';
> $farshad = '122';
> $jakob = '56';
> $mathias = 123';
> $sandra = '69';
> $steffen = '111';
>
> $sellers = array('Chris' => $chris, 'Christopher' =>
> $christopher, 'Farshad' => $farshad, 'Jakob' => $jakob, 'Mathias'
> => $mathias, 'Sandra' => $sandra, 'Steffen' => $steffen);

> rsort($sellers);
> echo $sellers;
> ?>

Det du laver, kaldes et associativt array - du bruger ikke de
automatisk stigende numre som nøgler, men i stedet navnene. Det
er en meget nyttig konstruktion til mange ting. Men hvis du
sorterer sådan et array, bliver nøglerne ødelagt og erstattet med
autonummerering.

Desuden er der et logisk problem selv om vi antager at det kunne
virke: Navnene står først (som nøgler), og derfor ville der blive
sorteret efter dem.

En hurtig løsning kunne være:

$sellers = array (
   array($chris,'Chris'),
   array($christopher,'Christopher'),
   array($farshad,'Farshad'),
   array($jakob,'Jakob'),
   array($mathias,'Mathias'),
   array($sandra,'Sandra'),
   array($steffen,'Steffen'),
);
rsort($sellers);
echo "<pre>";
print_r($sellers);
echo "</pre>";

hvor print_r() ikke kan bruges i det færdige program, men den er
god at bruge til kontrol i udviklingsfasen. I programmet skal det
laves sådan:

foreach ($sellers as $sells) {
   list ($value,$name)=$sells;
   echo "<p>$name: $value</p>";
}

Læg mærke til hvordan jeg har opstillet arrayet. PHP er ligeglad,
men vi mennesker der skal læse det, kan nemmere overskue det når
det står på min måde.

Et lille fif:
Jeg sætter komma også efter det sidste element i et array. Det må
man gerne, og hvis jeg senere udvuider med flere felter, får jeg
ikke nogen fejl på grund af manglende komma (som jeg ellers ville
glemme).

PS. Det kan godt være at andre løsninger ville være bedre på
grund af den måde det skal spille sammen med resten af programmet
på, men det kan jeg ikke vide.

--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

Ace (07-07-2011)
Kommentar
Fra : Ace


Dato : 07-07-11 14:56

Bertel Lund Hansen berigede Ace's verden med:

> Det du laver, kaldes et associativt array - du bruger ikke de
> automatisk stigende numre som nøgler, men i stedet navnene. Det
> er en meget nyttig konstruktion til mange ting. Men hvis du
> sorterer sådan et array, bliver nøglerne ødelagt og erstattet med
> autonummerering.
>
> Desuden er der et logisk problem selv om vi antager at det kunne
> virke: Navnene står først (som nøgler), og derfor ville der blive
> sorteret efter dem.
>
> En hurtig løsning kunne være:
>
> $sellers = array (
>    array($chris,'Chris'),
>    array($christopher,'Christopher'),
>    array($farshad,'Farshad'),
>    array($jakob,'Jakob'),
>    array($mathias,'Mathias'),
>    array($sandra,'Sandra'),
>    array($steffen,'Steffen'),
> );
> rsort($sellers);
> echo "<pre>";
> print_r($sellers);
> echo "</pre>";
>
> hvor print_r() ikke kan bruges i det færdige program, men den er
> god at bruge til kontrol i udviklingsfasen. I programmet skal det
> laves sådan:
>
> foreach ($sellers as $sells) {
>    list ($value,$name)=$sells;
>    echo "<p>$name: $value</p>";
> }
>
> Læg mærke til hvordan jeg har opstillet arrayet. PHP er ligeglad,
> men vi mennesker der skal læse det, kan nemmere overskue det når
> det står på min måde.
>
> Et lille fif:
> Jeg sætter komma også efter det sidste element i et array. Det må
> man gerne, og hvis jeg senere udvuider med flere felter, får jeg
> ikke nogen fejl på grund af manglende komma (som jeg ellers ville
> glemme).
>
> PS. Det kan godt være at andre løsninger ville være bedre på
> grund af den måde det skal spille sammen med resten af programmet
> på, men det kan jeg ikke vide.

Hold da helt fast! Dette er nok et af de bedste svar jeg nogensinde
har prøvet at få i et forum :O
Tusind tak for hjælpen, Bertel :) .. og tak for indsigten i brugen af
array's fremover. Hvis der var point at dele ud af, havde du fået dem
alle! ;)

Venligst
Ace

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Bertel Lund Hansen (07-07-2011)
Kommentar
Fra : Bertel Lund Hansen


Dato : 07-07-11 16:27

Ace skrev:

> Hold da helt fast! Dette er nok et af de bedste svar jeg nogensinde
> har prøvet at få i et forum :O

Tak for rosen. Så vil jeg lige gøre opmærksom på at jeg ikke har
noget med HTML.dk at gøre. De snylter på det egentlige forum der
kaldes "usenet" og som ikke er udviklet til at læses i en
browser.

HTML.dk var engang et fint site med gode artikler, og så gjorde
det ikke noget at de trak læsere til via usenets grupper. Men i
dag har det ligget stille i mange år og bruges kun til at skovle
reklamekroner ind. Artiklerne er forældede.

Det er ikke en hentydning til dig. Du skal være velkommen til at
bruge grupperne sådan som du finder det nemmest. Jeg ønsker blot
ikke at nogen skal tro at du har fået god hjælp af HTML.dk. Det
får man nemlig ikke.


--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

Martin Larsen (07-07-2011)
Kommentar
Fra : Martin Larsen


Dato : 07-07-11 19:15

Bertel Lund Hansen wrote:

> Et lille fif:
> Jeg sætter komma også efter det sidste element i et array. Det må
> man gerne, og hvis jeg senere udvuider med flere felter, får jeg
> ikke nogen fejl på grund af manglende komma (som jeg ellers ville
> glemme).

En lille advarsel hvis konceptet udvides til javascript:

I Firefox, Chrome mfl. kan man godt have et afsluttende komma i et
array, men den går ikke i IE.

Denne lille detaljer har kostet mig mange timer at debugge for nogle
måneder siden!

Personligt bryder jeg mig ikke om afsluttende komma da det virker helt
forkert (at jeg havde det var en fejl), men ja, det går i PHP

Martin

Søg
Reklame
Statistik
Spørgsmål : 177417
Tips : 31962
Nyheder : 719565
Indlæg : 6407865
Brugere : 218876

Månedens bedste
Årets bedste
Sidste års bedste