Advertisement
  1. Code
  2. PHP
Code

Arbejd med PHP Arrays på den rigtige måde

by
Difficulty:IntermediateLength:MediumLanguages:

Danish (Dansk) translation by Benjamin Høegh (you can also view the original English article)

I denne tutorial, har jeg tænkt mig at lave en liste over almindelige PHP array funktioner med eksempler på brugen og bedste i praksis. Alle PHP udviklere skal vide hvordan man bruger dem og hvordan man kan kombinere array funktioner for at gøre kode læseligt og kort.

Der er også en præsentation med givet kodeeksempler, så du kan downloade det fra de relaterede hyperlinks og så du kan vise det til dine kolleger og opbygge et stærkere hold.

Grundlæggende

Lad os starte med de grundlæggende funktioner, der arbejder med array nøgler og værdier. En af dem er array_combine(), hvilket skaber en array ved hjælp af en array til nøgler og en anden for sine værdier:

Du skal vide, at funktionen array_values() returnerer en indekseret array af værdier, array_keys() returnerer et array af nøglerne til en given array og array_flip() udvekslinger nøgler med værdier:

Gøre din kode kortere

Funktionen list(), der ikke er rigtig en funktion, men en sprog konstruktion, er designet til at tildele variabler i en kort vej. For eksempel, er her en grundlæggende eksempel på brug af funktionen list():

Denne konstruktion fungerer perfekt med funktioner som preg_slit() eller explode(). Også, kan du springe nogle parametre over, hvis du ikke behøver at definere dem:

list() kan også bruges med foreach, hvilket gør denne konstruktion endnu bedre:

Med funktionen extract() kan du eksportere et associativt array til variabler. For hvert enkelt element i en matrix oprettes en variabel med navnet på en nøgle og værdi som en værdien for elementet:

Vær opmærksom på at extract() ikke er sikker, hvis du arbejder med brugerdata (som resultater af anmodninger), så det er bedre at bruge denne funktion med flagene EXTR_IF_EXISTS og EXTR_PREFIX_ALL.

Modsat af den forrige funktion er den compact() funktion, som gør et associativt array fra variabler:

Filtrering funktioner

Der er en stor funktion til matrix filtrering, og det kaldes array_filter(). Passere matrixen som den første param og en anonym funktion som den anden param. Returnere true i en callback funktion, hvis du ønsker at forlade dette element i arrayet, og false, hvis du ikke gør:

Der er en måde at filtrere ikke kun af værdier. Du kan bruge ARRAY_FILTER_USE_KEY eller ARRAY_FILTER_USE_BOTH som en tredje parameter til at videregive den nøglen eller både værdi og nøglen til callback funktion.

Også, kan du ringe til array_filter() uden et tilbagekald til at fjerne alle tomme værdier:

Du kan få kun entydige værdier fra en matrix ved hjælp af funktionen array_unique(). Bemærk, at funktionen vil bevare nøglerne til de første unikke elementer:

Med array_column(), kan du få en liste over kolonneværdier fra en multi-dimensionelle array, som et svar fra en SQL-database eller en import fra en CSV-fil. Blot passere en array og kolonne navn:

Startende fra PHP 7, bliver array_column() endnu mere kraftfulde, fordi det er nu tilladt at arbejde med en bred vifte af objekter. Så arbejder med en bred vifte af modeller bare blev lettere:

Gå gennem arrays

Bruger array_map(), kan du anvende et tilbagekald til hvert enkelt element i en matrix. Du kan overføre et funktionsnavn eller anonym funktion til at få et nyt system baseret på den givne array:

Der er en myte, at der er ingen måde at pass værdier og nøgler i et array til et tilbagekald, men vi kan buste det:

Men det ser beskidt. Det er bedre at bruge array_walk() i stedet. Denne funktion ser det samme som array_map(), men det virker forskelligt. Først og fremmest er et array vedtaget af en reference, så array_walk() ikke oprette en ny array, men ændrer en given array. Så som en kilde array, kan du passerer array-værdi med en henvisning i et tilbagekald. Array-keys kan også overføres let:

Sammenføjning Arrays

Den bedste måde at flette to eller flere arrays i PHP er at bruge funktionen array_merge(). Elementer af arrays bliver flettet sammen, og værdier med de samme streng nøgler vil blive overskrevet med den sidste værdi:

Brug array_diff() til at fjerne array værdier fra et andet array (eller arrays). For at få værdier, der er til stede i betragtning af arrays, skal du bruge array_intersect(). De næste eksempler vil vise, hvordan det fungerer:

Gør Matematikken Med Array Værdier

Brug array_sum() til at få en sum af array værdier, array_product() at multiplicere dem, eller oprette din egen formel med array_reduce():

Hvis du vil tælle alle værdier i et array, skal du bruge array_count_values(). Det vil give alle entydige værdier i en bestemt matrix som nøgler og en optælling af disse værdier som en værdi:

Generering af Arrays

For at generere et array med en given størrelse og samme værdi, skal du bruge array_fill():

For at generere et array med en række i nøgler og værdier, som dag timer eller bogstaver, skal du bruge range():

At få en del af et array—for eksempel, bare de første tre elementer — bruge array_slice():

Sortering Arrays

Det er godt at huske, at hver sorteringsfunktionen i PHP fungerer med arrays af en reference og returnerer true på succes eller falsk på fiasko. Der er en grundlæggende sorteringsfunktionen kaldet sort(), og det mulige værdier i stigende rækkefølge uden at bevare nøgler. Sorteringsfunktionen kan være prepended af følgende bogstaver:

  • a, sortere, bevare nøgler
  • k, form af nøgler
  • r, sortere i omvendt/faldende rækkefølge
  • u, form med en bruger funktionen

Du kan se kombinationerne af disse breve i følgende tabel:

a k r u
a asort
arsort uasort
k ksort krsort
r arsort krsort rsort
u uasort
usort

Kombinere Array Funktioner

Den virkelige magi begynder når du begynder at kombinere matrixfunktioner. Her er hvordan du kan beskære og fjerne tomme værdier i blot en enkelt linje kode med array_filter() og array_map():

For at oprette et id til en titel kort fra en bred vifte af modeller, kan vi bruge en kombination af array_combine() og array_column():

For at få de øverste tre værdier i et array, kan vi bruge array_count_values(), arsort() og array_slice():

Det er let at bruge array_sum() og array_map() til at beregne summen af orden i et par rækker:

Konklusion

Som du kan se, kan viden om de vigtigste matrixfunktioner gøre din kode meget kortere og mere læservenlig. Selvfølgelig, PHP har mange flere matrixfunktioner,, og selv de givne funktioner har mange variationer til brug med ekstra parametre og flag, men jeg tror, at vi i denne tutorial har dækket det grundlæggende, som alle PHP udvikler bør vide.

Bemærk venligst, at jeg har oprettet en præsentation med de givne eksempler, så du kan downloade det fra de relaterede hyperlinks og vise det til dit hold.

Hvis du har spørgsmål, tøv ikke med at spørge dem i kommentarerne til artiklen.

Yderligere læsning og relaterede Links

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.