Avatar billede mnv_dk Praktikant
23. februar 2005 - 18:32 Der er 12 kommentarer og
2 løsninger

Minste værdi i et array

Ja, problematikken er at jeg skal bruge den mindste værdi i et array, det i sig selv er ikke noget problem, men jeg skal samtidig bruge IDEX'et for den, dvs, hvis mit array er:

Array
    (
    [0] => 30
    [1] => 10
    [2] => 20
    )

Skal jeg have returneret  nummer 1, da det er det index der har den laveste værdi, har kigger lidt på de forskellige sorts uden held, tror bare jeg har stirret mig blinf, for ved jeg har gjort det før, er der ikke en der kan komme med et lille hint ? Tak.
Avatar billede jensgram Nybegynder
23. februar 2005 - 18:49 #1
for ($i = 0; $i < count($array); $i++) {
    if ($i == 0 || $array[$i] < $array[$min]) {
        $min = $i;
    }
}
Avatar billede jensgram Nybegynder
23. februar 2005 - 18:50 #2
Altså:

function array_min($array)
{
    for ($i = 0; $i < count($array); $i++) {
        if ($i == 0 || $array[$i] < $array[$min]) {
            $min = $i;
        }
    }
    return $min;
}
Avatar billede detox Nybegynder
23. februar 2005 - 18:52 #3
Fx:

$array = Array
    (30, 10, 20);
asort($array);
echo key($array);
Avatar billede jensgram Nybegynder
23. februar 2005 - 18:52 #4
Kan selvfølgelig også laves med en foreach(), hvis array'et ikke er indekseret fra 0-"længde" (eller rekursivt, hvis man er til det)
Avatar billede jensgram Nybegynder
23. februar 2005 - 18:53 #5
Detox > d'oh - sortering er nok lidt smartere :P
Avatar billede detox Nybegynder
23. februar 2005 - 18:59 #6
Ja, man kunne jo osse lave en funktion, hvis den skal genbruges:

function ArrayMin($arr) {
    asort($arr);
    return key($arr);
}
Avatar billede jensgram Nybegynder
23. februar 2005 - 19:00 #7
evt.

function ArrayMin($_arr) {
    $arr = $_arr;
    return key($arr);
}

(eller er det nu sådan) for ikke at ændre på $_arr
Avatar billede detox Nybegynder
23. februar 2005 - 19:02 #8
jensgram -> funktioner bruger jo deres egne lokale variabler, så de vil aldrig ændre på de originale.
Avatar billede jensgram Nybegynder
23. februar 2005 - 19:04 #9
heller ikke når den er overført via reference? (er ikke meget inde i dette område?)
Avatar billede detox Nybegynder
23. februar 2005 - 19:06 #10
Jo, det er klart, hvis du fx laver den sådan, så ændrer den originalen:

function ArrayMin(&$arr) {
    asort($arr);
    return key($arr);
}
Avatar billede mnv_dk Praktikant
23. februar 2005 - 19:32 #11
der var den sgu :) Tak, kan i ikke lige smide et par svar?
Avatar billede detox Nybegynder
23. februar 2005 - 19:36 #12
Velbekommen
Avatar billede jensgram Nybegynder
23. februar 2005 - 19:48 #13
Skulle lige spise. Undskylder forvirringen
Avatar billede mnv_dk Praktikant
23. februar 2005 - 20:21 #14
Naa fuck det, saa kan i faa 30 hver, man skal sgu ikke være saa pjattet her om aftenen ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester