Hitta det högsta värdet i en array

Hem » Utveckling » Hitta det högsta värdet i en array

Hitta det högsta värdet i en array

Publicerad i PHP

Vi har tidigare gått igenom hur vi kan sortera en array i PHP på olika sätt. Nu ska vi lära oss att direkt hämta det största värdet i en array.

Ibland behöver man snabbt ta ut det högsta värdet ur en array för att exempelvis visa vem som leder eller har vunnit ett lopp.

Vår array över olika svenska städer och dess befolkningsmängd ser ut så här:

$cities = array(
    'Stockholm'=>974073,
    'Sundsvall'=>51354,
    'Mora'=>10896,
    'Helsingborg'=>108334,
    'Lund'=>91940,
);

En naturlig approach kan då vara att söka igenom arrayen med en foreach-loop, men det är inte ett effektivt sätt; istället är det bättre att unyttja de funktioner som faktiskt finns inbyggda i PHP.

Hitta det högsta värdet i en array

För att hitta det högsta värdet i en PHP-array använder vi funktionen max(), som gör exakt det vi vill; hittar det högsta värdet och visar det för oss.

Så här använder du max():

$highest = max($cities);

Du ger alltså en variabel värdet från den array du önskar hämta värdet från. Arrayen i sig är orörd och ändras inte av max()-funktionen.

Hitta det minsta värdet i en array

Om du istället vill göra det motsatta, alltså att hitta det minsta värdet i samma array, så använder du istället funktionen min() — logiskt, eller hur?

Funktionen min() används på samma sätt:

$lowest = min($cities);

Nu har variabeln $lowest fyllts på med det minsta värdet i arrayen $cities med hjälp av funktionen min().

Hitta nyckeln

Det vi dock saknar med dessa funktioner är vilken nyckel i vår array, alltså array key på engelska, som har det värde vi hittat. Om värdet vi hittat med hjälp av våra funktioner är unikt och bara finns en gång i arrayens olika värden kan vi söka fram det med funktionen array_search().

Så här använder du array_search():

$key = array_search($lowest,$cities);

I det här fallet söker vi fram nyckeln till det lägsta värdet utifrån variabeln $lowest, som vi fick när vi använde funktionen min() precis innan.

Det här fungerar alltså bara om värdet är unikt. Har vi två värden som är likadana och ska söka i en array — exempelvis om två personer heter Pelle — så vet vi inte vilken det "egentligen" ska vara. Just nu spelar det dock ingen roll, eftersom vi ändå bara vill veta nyckeln till det värde som är högst eller lägst.

Om båda värdena är lägst i vår array är vi nöjda med vilket värde som helst.

Hitta värdet med foreach

För att lära sig PHP kan det dock vara bra att grotta ner sig i detaljerna, och då kan vi fundera på hur vi skulle ta fram de högsta eller lägsta värdena i en array om vi inte fick använda min() eller max().

Med hjälp av funktionen foreach() går vi igenom en array steg för steg, och kan då jämföra värdena mot varandra. Innan vi börjar sätter vi en variabel för minsta respektive högsta värde — $lowest och $highest.

$lowest = false;
$highest = false;
foreach ($cities as $key=>$value) {
    if ($lowest==false || $value<$lowest) { $lowest = $value; }
    if ($highest==false || $value>$highest) { $highest = $value; }
}

Här använder vi först en logisk jämförelse där vi säger att om $lowest är falsk, vilket är dess ursprungliga värde, eller $value är mindre än $lowest, så ska $value bli nytt lägsta värde och alltså skriva över den befintliga $lowest.

För att förtydliga är det som sker ovan följande:

  1. Gå igenom $cities och ge oss både nyckeln och värdet
  2. Om vi inte satt data i $lowest tidigare — eller $value är lägre än $lowest — spara värdet
  3. Om vi inte satt data i $highest tidigare — eller $value är högre än $highest — spara värdet

Fördelen med att göra det på det här sättet är att vi kan göra vad vi vill med de händelser som ska inträffa i samband med detta. Vi kanske vill spara vilken nyckel/key det är i arrayen som har det här värdet, eller skicka en signal att vi hittat ett lägre värde.

Sammanfattning

Oavsett vilken metod du väljer är det viktigt att känna till de olika metoderna, och att de alla ger dig olika fördelar och nackdelar. Om allt du är ute efter är att snabbt hitta det högsta värdet från en array, då är max() din bästa vän — funktionen är snabb, koden är simpel och du behöver inte bry dig mer än så.

Om du vill lära dig PHP är det bästa sättet att labba runt med kod och helt enkelt prova själv; gör därför gärna lite egna tester där du hanterar arrayer på olika sätt. Rätt som det är kommer du ha lärt dig en av de viktigaste grunderna i att skriva PHP-kod.


Detaljer

  • Titel: Hitta det högsta värdet i en array
  • Publicerad:
  • Skribent:
  • Kategorier: PHP

Populära inlägg

Här hittar du de mest besökta artiklarna den senaste tiden.

Populära tjänster

Webbhotell

Inleed Special

29 kr / mån

  • Utrymme: 10 GB
  • Trafikmängd: 250 GB
  • Gratis SSL-certifikat: Ja
  • Startavgift: 0 kr

Virtuell server

Inleed VPS #1

199 kr / mån

  • Antal CPU-kärnor: 1 st
  • Minne: 8 GB
  • Utrymme: 100 GB
  • Trafikmängd: 3000 GB

Dedikerad server

Inleed Server #1

499 kr / mån

  • Antal CPU-kärnor: 2 st
  • Minne: 8 GB
  • Utrymme: 500 GB
  • Trafikmängd: 3000 GB

Backuphantering

Inleed Backup 100

19 kr / mån

  • Utrymme: 100 GB
  • Trafikmängd: 3000 GB
  • Startavgift: 0 kr

Domänhantering

Inleed DNS

0 kr / mån

  • Antal domännamn: Obegränsat

Co-location

Inleed Rackserver 1U

299 kr / mån

  • Trafikmängd: 3000 GB
  • Anslutning: 1000 Mbit/s
  • Reservström: UPS + Diesel
  • Startavgift: 0 kr

VPN-tjänster

NordVPN

33 kr / mån

  • Anslutningar: 6 st
Bäst webbhotell just nu
VPN-tjänster Pris Anslutningar
OVPN 49 kr 4 st
Inleed VPN 29 kr 2 st
NordVPN 33 kr 6 st
Ivacy VPN 22 kr 10 st

Vill du ha hjälp?

Ibland kan det vara svårt att göra ett val. Har du fortfarande inte hittat den information du söker, eller undrar du över något som saknas på sidan? Hör av dig till oss så hjälper vi dig!

Kontakta oss