Riktig array-definisjon. Funksjoner for å jobbe med php-matriser

1. Hva er en PHP-array?
2. Eksempel PHP-array?
3. Endimensjonal matrise (vektor)
- indeks
- assosiativ
4. Todimensjonal matrise (matrise innenfor en matrise, matrise)
5. Funksjoner for å arbeide med matriser (matrise innenfor en matrise, matrise)

Begynne dette emnet Jeg vil gjerne bruke forkastede eksempler. La oss si at vi vurderer noen person. Han har fornavn, etternavn, adresse, telefonnummer, kjønn, høyde, øyenfarge og så videre. Informasjon om alle disse punktene kan tilskrives en rekke data om en person.

Matrisen kan være av en annen type, uten noen spesifikasjoner på elementene. Det vil bare være et tema. La oss si dette web programmering. Og elementene vil være språk - HTML, CSS, JavaScript, PHP, MySQL. Det er 5 elementer totalt.

Basert siste eksempel anta en matrise:

web programmering
1. HTML
2.CSS
3. JavaScript
4.PHP
5. MySQL

Se nå på dette eksemplet og analyser de grunnleggende konseptene.

Array i PHP er et sett med sekvensielt lokaliserte data av samme type, relatert til et felles tema, hvor antall elementer er fast.

Array inn i dette eksemplet vil bli kalt web programmering.

Hvert element har sin egen ordinære plass, identifikator.
Indeks(matrisenøkkel) - enten serienummer, eller tekstverdi, der elementet kan identifiseres.

Indeksene i eksemplet ovenfor ville være numerisk verdi fra 1 til 5. Når vi får tilgang til indeks 2 vil vi se CSS.

Eksempel på en matrise i PHP

La oss nå se på eksemplet ovenfor i PHP syntaks, ikke det russiske språket. La oss si at matrisen kalles kortere - web. De firkantede parentesene vil sette inn en indeks.

La oss se på et enkelt eksempel på en matrise, der indeksverdiene vil inneholde numeriske verdier, og vi vil lage matrisen som om vi tilordner verdier til variabler.

$web='HTML';
$web='CSS';
$web='JavaScript';
$web='PHP';
$web='MySQL';

$web; // denne variabelen inneholder en matrise med 5 elementer

// for å vise et av array-elementene, spesifiser indeksen i arrayen
echo $web; // skriver ut PHP

Endimensjonal matrise

INDEKSARRI

Ovenfor, med webprogrammering, så vi bare på et eksempel på en endimensjonal matrise.
Det er sjelden skapt på denne måten. Det viser heller visuelt strukturen til arrayet. Oftere tyr de til en annen metode.

$web=array('HTML','CSS','JavaScript','PHP','MySQL');
echo $web; // vil sende ut 'HTML'
echo $web; // vil gi ut 'JavaScript'
echo $web; // vil skrive ut 'PHP'

Hvis du vil angi indeksverdier, må du spesifisere dem som følger. Skilt => er en peker for å tilordne en indeks til en verdi, eller omvendt til en indeksverdi.

$web=array(1=>'HTML',2=>'CSS',3=>'JavaScript',4=>'PHP',5=>'MySQL');
echo $web; // HTML
echo $web; // CSS
echo $web; //PHP
I eksemplet starter tellingen fra 1. Variabelen med indeks 0 er derfor tom.

I det følgende eksemplet vil vi ikke spesifisere en indeks.

$day='mandag'; // indeks 0
$day='tirsdag'; // 1
$day='onsdag'; // 2
$day='torsdag'; // 3
$day='fredag'; // 4
Du kan se at sekvensiell fylling skjer fra bunnen av.

TILHØRENDE ARRAY

Ofte er det behov for å lage en bokstavindeks for et matriseelement. Som jeg nevnte ovenfor, bør en slik indeks bestå av latinske bokstaver, og navnet må stå i anførselstegn. La oss se på eksemplet med en person.

$user['nick']='Logikk';
$user['name']='Pavel';
$user['age']='25';
$user['sex']='Mann';

$bruker; // $user-variabelen inneholder en matrise med 4 elementer med bokstavindekser

// vis array-elementet, som indikerer det bokstavregister
echo $web['navn']; // vil skrive ut 'Pavel'
Som du kan se, er alt ganske enkelt. Vi oppgir kun indeksverdien.

Todimensjonal matrise

Hvis du gikk glipp av den første delen med One-Dimensional Array, anbefaler jeg deg sterkt å lese den.
For å si det enkelt, er det en matrise i en matrise. Det vil si at elementene i et stort utvalg er forskjellige. Slike arrays bremser virkelig skriptet, lasting RAM, derfor for rask behandling Det er opprettet databaser for lignende datagrupper (Hva er en database?), men mer om det senere. La oss se på et eksempel på en todimensjonal matrise.

// array med navn på deler av verden
$m = array('Europa','Asia','Afrika','Amerika','Australia og Oseania');

// array med navn på land
$s = array('Russland','Ukraina','Hviterussland','Kasakhstan');

// array med navn på versaler
$с = array('Moskva','Kiev','Minsk','Astana');

// lage en todimensjonal matrise Geografi
$geografi = array($m, $s, $c);
?>
Inkluderte arrays, som du la merke til, kan ha et annet antall elementer. Fra delen om endimensjonale matriser følger det at hvert element i matrisen kan ha en indeks. Så la oss tilordne en annen verdi til hver inkluderte matrise.

For å gjøre dette, utvide den siste linjen og skriv den som følger.

$geography = array('Parts of the World'=>$m, 'Countries'=>$s, 'Capitals'=>$s);

Funksjoner for å jobbe med php-matriser

For hver er en syklisk funksjon for arbeid med matriser, der antall sykluser er lik antall matriseelementer.

Det ser slik ut:

PHP-kode

foreach (matrise som $key=>$value)
lag;
Vel, med en gang et eksempel på arbeid

// lag en matrise med kjent IT
$names["Ritchie"] = "Dennis";
$names["Thompson"] = "Ken";
$names["Gates"] = "Rekning";
$names["Jobs"] = "Steve";

foreach ($names som $key => $value) (
ekko "$verdi $nøkkel";
}
?>
Skriptet vil vises på skjermen

Dennis Ritchie
Ken Thompson
Bill Gates
Steve Jobs
Telle— en funksjon som returnerer antall elementer i matrisen.

ekkotelling($navn); // i vårt eksempel med IT vil returnere verdien 4
Sortere— en funksjon som sorterer matriseelementer. Praktisk i tilfelle numeriske verdier indeks.
Arsort- en funksjon som sorterer array-elementer i omvendt rekkefølge.

sort($navn); // sorterer i rekkefølge. Det er praktisk hvis det er tall i indeksen
arsort($navn); // sortere i omvendt rekkefølge. Det vil si at ved indekser vil elementene være i rekkefølgen 3, 2, 1, 0
Deaktivert er en funksjon som fjerner et matriseelement.

unset($array); // fjerner array-element med indeks 2
unset($array); // sletter hele matrisen
Array_search— søkefunksjon i en matrise.

Leksjon 7. Arrays i PHP

Har to argumenter. Enkelt sagt har den array_search('hva', hvor)

$animals='hund';
$animals='katt';
$animals='fugl';
echo array_search('katt',$dyr); // vil vise indeksen til elementet - nummer 2
Tilfeldig rekkefølge er en funksjon som blander tastene til matriseverdiene.

shuffle($dyr); // vil ordne elementene i tilfeldig rekkefølge
Takk for din oppmerksomhet!

Forrige artikkel
Leksjon 6. Løkker i PHP Neste artikkel
Leksjon 8. Inkluderer en fil i PHP. Ta med og kreve

Kommentarer til artikkelen (vk.com)

Oppretter en tom matrise.

Du kan dumpe verdiene inn i en matrise senere, slik:

dette øyeblikket$myArray inneholder "tre", "hus" og "hund". Hver av kommandoene ovenfor legger til matrisen, og bevarer elementene som allerede var der.

Når jeg kommer fra andre språk, virket denne måten å legge til en array på merkelig for meg. Jeg forventet å gjøre noe som $myArray+="dog" eller noe...

eller kanskje en "add()"-metode som samlinger Visual Basic. Men denne direkte tilføyningssyntaksen er kort og praktisk.

Du bør faktisk bruke funksjonen unset() for å fjerne elementer:

... vil fjerne "hus" fra matrisen (matriser er nullbaserte).

Grunnleggende om arbeid med arrays i PHP

...vil ødelegge hele arrayet.

For å være tydelig er syntaksen tom firkantet parenteså legge til en matrise er bare en måte å fortelle PHP å automatisk tilordne abonnenter til hver verdi, i stedet for å tilordne abonnenter. Coverings, PHP gjør faktisk dette:

Du kan tildele indekser selv hvis du vil, og kan bruke hvilke tall du vil. Du kan også tilordne indeksnummer til noen elementer og ikke andre. Hvis du gjør dette, vil PHP fylle inn de manglende indekstallene, økende fra begynnelsen stort rom indeksen tilordnes når den kommer.

Så hvis du gjør dette:

... elementet "hund" vil bli tildelt indeksnummer 21. PHP gjør ikke intelligent mønstertilpasning for å tilordne indekser en etter en, så det vil ikke vite at du kanskje vil tilordne indeksnummer 30 til "hund." Du kan bruke andre funksjoner til å spesifisere inkrementmønsteret for en matrise. Jeg vil ikke gå inn på det, men det er alt i PHP-dokumentene.

På noen andre språk (f.eks. AS3) har det blitt lagt merke til at initialisering av en ny matrise er raskere hvis den gjøres som en snarere enn for formålet med objektoppretting og instansiering. Jeg lurer på om det er noen ekvivalenser i PHP?

Arrays i PHP. Arbeide med arrays i PHP.

Denne artikkelen dekker arbeid med arrays i PHP (grunnleggende). Arrays i PHP er en datatype som lar deg lagre flere variabler i en.

Her er ett enkelt eksempel:

I eksemplet ovenfor er $products en matrise der vi har lagret flere forskjellige produkter. Deretter utledet vi alle disse produktene, og fikk tilgang til hver gjennom "indekser" (nøkler): 0, 1 og 2.

Selvfølgelig kan individuelle verdier også lagres i separate variabler, for eksempel slik:

Dette er selvfølgelig bra, men la oss forestille oss at vi plutselig trengte å gå gjennom alle disse elementene. Hvordan kan vi være her? Skrive kode for hver variabel? Det er langt og upraktisk. Løsningen er å bruke arrays.
Ved å bruke loops kan vi få tilgang til neste element ved hvert iterasjon (trinn), takket være indekser (nøkler).

Opprette en matrise i PHP.

Det er ikke nødvendig å deklarere en matrise i PHP. Vi kan lage en matrise ved å bruke array()-funksjonen:

I i dette tilfellet vi har laget en tom matrise. Hvis vi angir flere verdier i parentes atskilt med komma, vil vi fylle ut gitt array flere elementer:

Typer arrays.

1. "Indekserte" arrays eller "auto-arrays". Vi har allerede gitt eksempler på en slik matrise ovenfor. En spesiell egenskap ved disse matrisene er at de har numeriske indekser som opprettes automatisk ("on the fly"). Nummereringen av elementer starter fra 0.

Hvordan bestemme lengden (størrelsen) på en indeksert matrise.

Bruke Arrays

Bruker funksjonen telle():

Oppregning av elementer. Du kan telle opp alle elementene i en auto-array ved å bruke konstruksjonen til eller for hver:

Å legge til nytt element til en matrise (skriv til en matrise), trenger vi bare å utføre følgende linje:

Løkker gjennom alle elementer assosiativ matrise utført som følger:

3. Flerdimensjonale arrays inneholder andre matriser som elementer:

Vi kan også lage en tredimensjonal matrise:

sende ut en matrise i PHP. Du kan vise hvilken som helst matrise ved å bruke funksjonen print_r(), For eksempel:

Men når et element slettes, forblir indeksene til andre elementer uendret.

Funksjoner for å jobbe med matriser:

Sortering av matriser
array_search – søk etter en verdi i en matrise

En matrise er en samling av objekter som har samme størrelse og type. Hvert objekt i matrisen kalles element i matrisen. Det er enkelt å lage en ny array i PHP. Når du erklærer en indeksert matrise, plasseres et par firkantede parenteser () etter variabelnavnet:

$languages ​​= "Spansk";

// $languages ​​​​= "spansk"

Du kan deretter legge til nye elementer i matrisen, som vist nedenfor. Vær oppmerksom på at nye elementer legges til uten eksplisitt spesifikasjon av en indeks. I dette tilfellet legges det nye elementet til i en posisjon som er lik lengden på matrisen pluss 1:

$languages ​​= "Engelsk"; // $1anguages[l] = "Engelsk";

$languagest ] = "Gælisk"; // $languages ​​​​= "Gælisk";

I tillegg kan nye elementer legges til på en bestemt posisjon i matrisen. For å gjøre dette, spesifiser indeksen til det første elementet:

$languages ​​= "Italiensk";

$languages ​​= "Fransk";

Associative arrays lages på lignende måte:

$languages["Spain"] = "Spansk";

$languages["France"] = "Fransk";

Når du lager matriser, brukes tre standardspråkkonstruksjoner:

  • array();
  • liste();
  • område().

Selv om alle tre tilfellene resulterer i det samme resultatet, skaper en matrise, i noen tilfeller kan ett design være å foretrekke fremfor de andre. Nedenfor er beskrivelser og eksempler på bruk av hvert design.

array()-funksjonen får null eller mer elementer og returnerer en matrise bestående av spesifiserte elementer. Syntaksen er:

array array ([element1, element2...])

Array() er sannsynligvis bare en mer visuell stenografi for å lage en matrise, brukt for programmerer bekvemmelighet. Nedenfor er et eksempel på bruk av array() for å lage en indekserbar matrise:

$languages ​​​​= array("engelsk". "gælisk". "spansk");

// $languages ​​​​= "Engelsk". $languages ​​​​= "gælisk",

// $languages ​​​​= "spansk"

Her er hvordan array() brukes til å lage assosiative arrays:

$languages ​​​​= array("Spania" => "Spansk",

"Ireland" => "Gælisk".

"United States" => "Engelsk");

// $languages["Spain"] = "Spansk"

// $languages["Ireland"] = "Gælisk"

// $languages["United States"] = "Engelsk"

Assosiative matriser er spesielt nyttige i situasjoner der numeriske indekser ikke har en logisk samsvar. For eksempel, i det forrige eksemplet, er landnavn ganske naturlig forbundet med språk. Prøv å implementere denne logiske forbindelsen ved å bruke tall!

List()-konstruksjonen ligner på array(), men hovedformålet er å tilordne verdier ekstrahert fra en matrise samtidig til flere variabler samtidig. List() kommandosyntaks:

ugyldig liste (variabel1 [. variabel2, ...])

List()-konstruksjonen er spesielt nyttig når du leser informasjon fra en database eller fil. La oss si at du vil formatere og sende ut data som er lest fra tekstfil. Hver linje i filen inneholder informasjon om brukeren (navn,

yrke og favorittfarge); Komponentene i en post er atskilt med en vertikal strek (|). Typisk linje ser slik ut:

Nino Sanzi|Profesjonell golfspiller|grønn

Ved å bruke list(), kan du skrive en enkel sløyfe som leser hver linje, tilordner komponentene til variabler og formaterer og viser dataene. Listen nedenfor viser muligheten til å tilordne flere variabler samtidig ved å bruke list():

while ($line = fgets ($user_file. 4096)):

// Del strengen ved å bruke split().

// Komponenter er tilordnet til Sname-variabler. $okkupasjon og Scolor.

liste ($navn, $okkupasjon, $farge) = split("|", $line);

// Formater og utdata

skriv ut "Navn: Snavn
";

print "Yrke: yrke
";

print "Favorittfarge: Farge
";

Hver linje i filen leses, formateres og skrives ut som følger:

Navn: Nino Sanzi

Yrke: Profesjonell golfspiller

Favoritt farge: grønn

I eksemplet ovenfor avhenger bruken av list() av ​​å dele opp strengen i elementer ved å bruke split()-funksjonen. Elementene som resulterer fra divisjonen er tilordnet henholdsvis variablene $navn, $occupation og $color. Deretter handler det om å formatere dataene for utdata i en bestemt nettleser. Praktiske verktøy for leksikalsk analyse av tekstfiler er en av de styrker PHP. Dette emnet er dekket i detalj i kapittel 7 og 8.

Range()-konstruksjonen lar deg raskt og enkelt lage en rekke heltall fra et område definert av en øvre og nedre grense. Range() returnerer en matrise som består av alle heltall i det angitte området. range() syntaks:

matriseområde (int nedre_grense, int øvre_grense)

Følgende eksempel viser tydelig hvor praktisk denne designen er:

$lottery = range(0.9);

// $lotteri = array(0,1,2,3,4,5,6,7,8,9)

Som man kan se fra fragmentet ovenfor, spesifiserte range()-parametrene et intervall fra 0 til 9 og $lottery-matrisen ble fylt med heltall fra dette intervallet.

Flerdimensjonale arrays

Over tid vil programmene dine bli mer komplekse, og enkle endimensjonale arrays vil ikke være nok til å lagre nødvendig informasjon. Flerdimensjonal matrise(array of arrays) gir programmereren mer effektive midler for lagring av informasjon som krever ytterligere strukturering. Det er enkelt å lage en flerdimensjonal matrise – bare legg til et ekstra par firkantede parenteser for å tvinge matrisen inn i en ny dimensjon:

$chessboard = "Konge"; // Todimensjonal matrise

$capitals["USA"] ["Ohio"] = "Columbus": // Todimensjonal array

$streets["USA"]["Ohio"]["Columbus"] = "Harrison"; // Tredimensjonal matrise

Som et eksempel, vurder en matrise som lagrer informasjon om desserter og funksjonene i tilberedningen. Det ville være ganske vanskelig å klare seg med en endimensjonal matrise, men en todimensjonal matrise passer perfekt:

$desserter = arraу(

"Fruit Cup" => array (

"kalorier" => "lav",

"servert" -> "kald",

"preparation" => "10 minutter"

"Brownies" => array (

"kalorier" -> "høy",

"served" => "rykende varmt",

"preparation" => "45 minutter"

Etter å ha opprettet en matrise, kan dens elementer nås ved å bruke de tilsvarende tastene:

$desserts["Fruit Cup"]["preparation"] // returnerer "10 minutter"

$desserts["Brownies"]["calories"] // returnerer "high"

Tilordning av verdier til elementer i flerdimensjonale arrays utføres på samme måte som i endimensjonale arrays:

$desserts["Cake"]["calories"] = "for mange";

// Setter "kalorier"-egenskapen til "Kake"-objektet til "for mange"

Selv om nye nivåer vises i flerdimensjonale arrays logisk organisering data skapes flerdimensjonale arrays på nesten samme måte som endimensjonale. Imidlertid krever referanser til flerdimensjonale arrays i strenger spesiell oppmerksomhet; Den neste delen er viet til dette emnet.

Referanser til flerdimensjonale arrays

print "Brownies er gode, men kaloriinnholdet er ".

$desserts["Brownies"]["kalorier"];

print "Brownies er gode, men kaloriinnholdet er det

($desserter)";

Legg merke til fraværet av anførselstegn rundt tastene. Du bør også huske at det ikke skal være ekstra mellomrom mellom krøllete seler og lenken. Hvis minst én av disse betingelsene ikke er oppfylt, vil det oppstå en feil. Begge metodene er imidlertid egnet. Jeg anbefaler å velge ett format og holde fast ved det for å få programmene til å se mer konsistente ut. Hvis ikke bruk Med noen av disse formateringsmetodene vil referanser til flerdimensjonale arrays bli tolket bokstavelig, noe som sannsynligvis vil føre til uventede resultater.

Finne matriseelementer

Å søke etter elementer er en av de viktigste operasjonene med matriser. Det er flere i PHP standard funksjoner, noe som gjør det enkelt å finne i arrayet de nødvendige nøklene og betydninger.

Funksjonen i n_array() sjekker om et gitt element er tilstede i matrisen. Hvis søket er vellykket, returnerer funksjonen TRUE, ellers returnerer den FALSE. Syntaksen til funksjonen in_array() er:

bool in_array(blandet element, array array)

Denne funksjonen er spesielt praktisk fordi du ikke trenger å gå gjennom hele arrayet på jakt etter ønsket element. I følgende eksempel ser in_array()-funksjonen etter elementet "Russian" i $languages-arrayen:

$languages ​​​​= array("engelsk", "gælisk", "spansk"):

$exists = in_array("russisk", $languages); // $exists er satt til FALSE

$exists = in_array("engelsk", $languages): // $exists er satt til TRUE

Funksjonen in_array() finnes ofte i kontrollkonstruksjoner der dens returverdi (TRUE/FALSE) brukes til å velge ett av to fortsettelsesalternativer. Følgende eksempel bruker funksjonen in_array() for å velge ett av to alternativer i en betinget if-setning:

// Brukerinndata

$language = "Fransk"; $email = " [e-postbeskyttet]";

// Hvis språket er tilstede i matrisen

if (in_array($language. $languages)):

// Abonner brukeren på nyhetsbrevet.

// Vennligst merk: PHP har ikke en standard funksjon kalt

// subscribe_user(). I dette eksemplet simulerer denne funksjonen ganske enkelt

// abonnementsprosess.

subscribe_user($email, $language);

print "Du abonnerer nå på $language-utgaven av nyhetsbrevet.";

// Språk er ikke i matrisen

print "Vi"beklager, men vi tilbyr ennå ikke en $language-utgave av nyhetsbrevet".

Hva skjer i dette eksemplet? La oss si at variablene $language og $email inneholder brukerinndata. Du vil forsikre deg om at det angitte språket støttes av systemet ditt og bruke funksjonen in_array() til dette formålet. Hvis språknavnet er til stede i arrayet, abonnerer brukeren på nyhetsbrevet og mottar en tilsvarende melding. Ellers melder programmet at nyhetsbrevet ikke distribueres på det angitte språket. Selvfølgelig, i et ekte program, skal brukeren ikke trenge å gjette hvilke språk programmet støtter. Problemet løses ved hjelp av en nedtrekksliste - dette emnet diskuteres i detalj i kapittel 10. Her demonstrerer dette eksemplet bare mulighetene for å jobbe med matriser.

Funksjonen array_keys() returnerer en matrise som inneholder alle nøklene til den opprinnelige matrisen som er sendt som en parameter. Hvis anropet passerer den ekstra search_item-parameteren, returneres bare nøkler som samsvarer med den gitte verdien; ellers returneres alle matrisenøkler. Syntaksen for array_keys()-funksjonen er:

array array_keys (array array [, blandet søkeelement])

La oss se på et eksempel på bruk av funksjonen array_keys() for å få nøkkelen til et gitt element:

$great_wines = array ("Australia" => "Clarendon Hills 96",

"France" => "Comte George de Vogue 97",

"Austria" => "Feiler Artinger 97");

$great_labels = array_keys($great_wines);

// $great_labels = array("Australia", "Frankrike", "Østerrike");

$great_labels = array_keys($great_wines, "Clarendon Hills 96");

// $great_labels = array("Australia");

Funksjonen array_keys() gjør det veldig enkelt å få alle nøklene til en assosiativ matrise - for eksempel i det forrige tilfellet var de navnene på landene der ulike typer vin produseres.

Array_values()-funksjonen returnerer en matrise som består av alle verdiene i den opprinnelige matrisen sendt som en parameter. Syntaksen for array_values()-funksjonen er:

array array_values(array array)

La oss gå tilbake til forrige eksempel, hvor funksjonen array_keys() ble brukt for å få alle nøkkelverdiene. Denne gangen returnerer funksjonen array_values() alle verdiene som tilsvarer nøklene:

// $great_wines = array ("Australia" => "Clarendon Hills 96",

// "France" => "Comte George de Vogue 97",

// "Austria" => "Feiler Artinger 97");

$store_etiketter = array_values($store_viner);

// $great_labels = аrraу("Clarendon Hills 96",

// "Comte George de Vogue 97",

// "Feiler Artinger 97");

Funksjonene array_keys() og array_values() utfyller hverandre, slik at du kan få alle komponentene til en eller annen side av en assosiativ matrise hvis nødvendig.

Legge til og fjerne elementer

Heldigvis trenger du ikke spesifisere et maksimalt antall elementer i PHP når du oppretter en matrise. Dette gir deg mer fleksibilitet når du opererer på matriser fordi du ikke trenger å bekymre deg for å overkjøre matrisen ved et uhell hvis antall elementer overskrider en forventet terskel. Det er flere funksjoner i PHP for å øke størrelsen på en matrise. Noen av dem ble laget for å gjøre det enklere for programmerere som er vant til å jobbe med forskjellige typer køer og stabler (FIFO, FILO, etc.), noe som gjenspeiles i navnene på funksjonene (push, pop, shift og unshift). Men selv om du ikke vet hva en "kø" eller "stabel" er, ikke bekymre deg - det er ikke noe komplisert med disse funksjonene.

En kø er en datastruktur som elementer hentes fra i den rekkefølgen de mottas. En stabel er en datastruktur som elementer hentes fra i omvendt rekkefølge av deres ankomst.

Funksjonen array_push() legger til (det vil si legger til slutten av matrisen) ett eller flere nye elementer. Syntaksen for array_push()-funksjonen er:

int array_push(array array, blandet element [, ...])

Lengden på en matrise øker i direkte proporsjon med antall elementer. Dette er demonstrert i følgende eksempel:

$languages ​​= array("spansk", "engelsk", "fransk");

array_push($languages, "russisk", "tysk", "gælisk");

// $languages ​​​​= array("spansk", "engelsk", "fransk",

// "russisk", "tysk", "gælisk")

Array_push()-funksjonen, som mange vanlige PHP-funksjoner, har en "dobbel" - array_push()-funksjonen, designet for å hente elementer fra en matrise. Hovedforskjellen mellom disse funksjonene er at array_push() kan legge til flere elementer om gangen, mens array_push() bare fjerner elementer ett om gangen.

array_pop()

Resultatet av funksjonen array_push() er nøyaktig det motsatte av array_push() - denne funksjonen henter (det vil si fjerner) det siste elementet fra matrisen. Det utpakkede elementet returneres av funksjonen. Syntaks for app_op()-funksjonen:

array_pop(array array)

Hver gang appray_pop() kjøres, reduseres størrelsen på matrisen med 1. La oss se på et eksempel:

$languages ​​​​= array("spansk", "engelsk", "fransk",

"russisk", "tysk", "gælisk");

$a_language = array_pop($languages): // $a_language = "gælisk"

$a_language = array_pop($languages): // $a_language = "Tysk"

// $languages ​​​​= array ("spansk", "engelsk", "fransk", "russisk");

Funksjonene array_push() og array_pop() er nyttige fordi de lar deg utføre operasjoner på elementer og kontrollere størrelsen på en matrise uten å bekymre deg for uinitialiserte eller tomme elementer. Denne løsningen fungerer mye mer effektivt enn noen forsøk på å kontrollere disse faktorene fra programmereren.

Funksjonen array_shift() ligner på array_shift() med én forskjell: elementet fjernes fra begynnelsen (venstre kant) av arrayen. Alle andre elementer i matrisen flyttes en posisjon til begynnelsen av matrisen. Funksjonen array_shift() har samme syntaks som array_shift():

array_shift(array array)

Når du arbeider med array_shift()-funksjonen, må du huske at elementer fjernes fra begynnelsen av arrayen, som følgende eksempel viser:

$languages ​​= array("spansk", "engelsk", "fransk", "russisk");

$a_language = array_shift($languages); // $a_language = "Spansk";

// $languages ​​= array("engelsk", "fransk", "russisk");

Funksjonen array_unshift() utfyller array_shift() ved å sette inn et nytt element i begynnelsen av arrayen og flytte de gjenværende elementene én posisjon til høyre. Kommandosyntaksen for array_unshift() er:

1nt array_unshift(array array, mixed variabel1 [....variable2])

Med ett funksjonskall kan du legge til ett eller flere elementer, og størrelsen på matrisen øker proporsjonalt med antall lagt til elementer. Eksempel på å legge til flere elementer:

$ languages ​​= array("fransk", "italiensk", "spansk");

array_unshift($languages, "russisk", "swahili", "kinesisk");

// $languages ​​​​= array("russisk", "swahili", "kinesisk",

// "fransk", "italiensk", "spansk");

Funksjonen array_pad() lar deg raskt vokse en matrise til ønsket størrelse ved å fylle den med standardelementer. Syntaksen for array_pad()-funksjonen er:

array arrap_pad(array array, int size, mixed value):

Parameter størrelse definerer den nye lengden på matrisen. Parameter betydning angir standardverdien som er tilordnet elementer ved alle nye posisjoner i matrisen. Det er noen ting du bør vurdere når du bruker array_pad():

Hvis størrelse er positiv, er matrisen polstret til høyre, og hvis negativ, er matrisen polstret til venstre.

Hvis den absolutte verdien av parameteren størrelse er mindre enn eller lik lengden på matrisen, utføres ingen handling.

Den absolutte verdien (modulen) til et heltall er dens usignerte verdi. For eksempel er den absolutte verdien av tallene 5 og -5 5.

Eksempel på å legge til en matrise fra slutten:

$vekter = array_pad($vekter. 10, 100);

// Resultat: $vekter = array(1, 3, 5, 10, 15, 25, 50, 100, 100, 100);

Eksempel på å legge til en matrise fra begynnelsen:

$vekter = array(1, 3, 5, 10, 15, 25, 50);

$vekter = array_pad($vekter, -10, 100);

// Resultat: $weights = array(100, 100, 100, 1, 3, 5, 10, 15, 25, 50);

Feil forsøk på å legge til en matrise:

$vekter = array(1, 3, 5, 10, 15, 25, 50);

$vekter = array_pad($weigtits, 3, 100);

// $weights-matrisen endres ikke:

// $vekter = array(1, 3, 5, 10, 15, 25, 50);

Iterering over elementer

PHP har flere standardfunksjoner designet for å iterere gjennom array-elementer. Sammen gir disse funksjonene en fleksibel og praktisk måte å raskt behandle og vise innholdet i arrays. Du vil sannsynligvis bruke disse funksjonene mye, siden de danner grunnlaget for nesten alle array-algoritmer.

Reset()-funksjonen flytter den interne pekeren til gjeldende posisjon i matrisen til det første elementet. I tillegg returnerer den verdien til det første elementet. Tilbakestill() funksjonssyntaks:

blandet tilbakestilling (array array)

Tenk på følgende array:

$fruits = array("eple", "appelsin", "banan");

La oss si at den gjeldende posisjonspekeren i denne matrisen er satt til elementet "oransje". Team:

$a_fruit = reset($frukter);

vil returnere en peker til begynnelsen av matrisen, det vil si elementet "eple", og vil returnere denne verdien hvis resultatet av reset()-kallet brukes i programmet. En forenklet versjon av samtalen er også mulig:

I dette tilfellet flyttes pekeren til det første elementet i matrisen og returverdien brukes ikke.

each()-funksjonen gjør to ting hver gang den kalles: den returnerer nøkkel/verdi-paret som refereres til av gjeldende posisjonspeker, og den flytter pekeren til neste element. Syntaks for hver() funksjon:

array hver (array array)

For enkelhets skyld returnerer hver() nøkkelen og verdien som en matrise med fire elementer; nøklene til denne matrisen er 0, 1, verdi og nøkkel. Den returnerte nøkkelen er assosiert med nøkler 0 og nøkkel, og den returnerte verdien er assosiert med nøkler 1 og verdi.

I følgende eksempel returnerer each()-funksjonen elementet på gjeldende posisjon:

// Deklarer en matrise med fem elementer

$spices = array("persille", "salvie", "rosmarin", "timian", "pepper");

// Sett pekeren til det første elementet i matrisen

// Lag en matrise $a_sp1ce. firedelt

$a_spice = each($spices);

Som et resultat av å utføre fragmentet ovenfor, vil $a_spice-arrayet inneholde neste par"nøkkel/verdi":

  • 0 => 0;
  • 1 => "persille";
  • nøkkel => 0;
  • verdi => "persille".

Etter dette kan strengen "persille" sendes ut av en av følgende kommandoer:

print $a_spice: print $a_spice["verdi"];

each()-funksjonen brukes vanligvis i kombinasjon med list() i looping-konstruksjoner for å iterere gjennom alle eller noen av elementene i en matrise. Ved hver iterasjon returnerer each() enten neste nøkkel/verdi-par eller en boolsk false når nådd siste element array. La oss gå tilbake til $spices-arrayen; For å vise alle elementene på skjermen kan du bruke følgende skript:

// Tilbakestill gjeldende posisjonspeker

// Oppregne nøkkel/verdi-par, begrense utdata til verdien

while (liste ($key, $val) = hver ($spices)):

skriv ut "$val
"

Nedenfor er et mer interessant eksempel på bruk av each() i kombinasjon med de andre funksjonene beskrevet i dette kapittelet. Liste 5.1 viser hvordan du bruker disse funksjonene til å vise en formatert tabell over land og språk.

Oppføring 5.1. Bygge en HTML-tabell fra innholdet i en matrise

// Erklær en assosiativ rekke av land og språk $languages ​​= array ("Land" => "Språk",

"Spain" => "Spansk",

"USA" => "Engelsk",

"France" => "Fransk",

"Russia" => "Russisk");

// Start en ny tabell

skrive ut "

";

// Flytt pekeren til posisjonen til det første elementet

$hdl = nøkkel($språk);

Shd2 = $languages[$hd1];

// Vis den første nøkkelen og elementet som tabelloverskrifter

skrive ut "

";

neste($språk);

// Skriv ut tabellrader med nøkler og matriseelementer

while (liste ($ctry,$lang) = hver ($languages)):

skrive ut "

";

// Avslutt tabellen utskrift "

$hd1$hd2
Scry$lang
";

Å kjøre denne koden vil produsere følgende HTML-tabell.

Land

Språk

Spania spansk
USA Engelsk
Frankrike fransk
Russland russisk

Dette eksemplet gir en idé om PHPs største styrke - dens evne til å kombinere dynamisk kode med HTML for å produsere en visuell, formatert representasjon av dataene den leser.

End()-funksjonen flytter pekeren til posisjonen til det siste elementet i matrisen. end() funksjonssyntaks:

end(array array)

Next()-funksjonen flytter pekeren én posisjon fremover og returnerer deretter elementet inn ny stilling. Hvis som følge av forskyvning

pekeren vil gå utover matrisen, next() returnerer false. Neste() funksjonssyntaks:

blandet neste (array array)

Ulempen med next()-funksjonen er at den returnerer false for eksisterende men tomme array-elementer. Hvis du vil gjøre et vanlig søk, bruk each()-funksjonen.

Prev()-funksjonen ligner på next() med ett unntak: den flytter pekeren én posisjon til begynnelsen av matrisen, og returnerer deretter elementet til den nye posisjonen. Hvis forskyvningen plasserer pekeren før det første elementet i matrisen, vil prev() returnere false. Prev()-funksjonens syntaks er:

blandet forrige (array array)

Ulempen med prev()-funksjonen er at den returnerer false for eksisterende, men tomme matriseelementer. Hvis du vil gjøre et vanlig søk, bruk each()-funksjonen.

Funksjonen array_walk() lar deg bruke en funksjon på flere (eller muligens alle) elementer i en matrise. Syntaksen for array_walk()-funksjonen er:

int array_walk(array array, string function_name [, blandede data])

Funksjonen spesifisert av funksjonsnavn kan brukes til forskjellige formål, for eksempel å finne elementer med visse egenskaper eller modifisere innholdet i en matrise. I assosiative matriser må funksjonsnavn-funksjonen motta minst to parametere - et matriseelement og en nøkkel. Hvis de valgfrie tredje parameterdataene er spesifisert, blir de den tredje parameteren. Følgende eksempel bruker funksjonen array_walk() for å fjerne duplikater fra en matrise:

funksjon delete_dupes($element) (

statisk $last=""; if ($element == $last)

unset($element); ellers. ""

$emails = array(" [e-postbeskyttet]", "[e-postbeskyttet]", "[e-postbeskyttet]");

array_walk($emails,"delete_dupes");

// $emails = array(" [e-postbeskyttet]", "[e-postbeskyttet]");

Funksjonen array_reverse() lar deg enkelt snu rekkefølgen på elementene som utgjør en matrise. Syntaksen for array_reverse()-funksjonen er:

array array_reverse(array array)

La oss se på et eksempel på bruk av array_reverse()-funksjonen:

$us_wireproducers = array("California", "Oregon", "New York". "Washington");

$us_vinprodusenter - array_reverse(Sus_vinprodusenter);

// $us_wine_producers = array ("Washington". "New York", "Oregon". "California");

Når du kaller array_reverse() på en assosiativ matrise, blir nøkkel/verdi-parene bevart, bare rekkefølgen på matriseelementene endres.

Funksjonen array_flip() snur nøklene og verdiene til matriseelementer. Syntaksen for array_flip()-funksjonen er:

array array_flip(array array)

I det følgende eksempelet bytter array_flip()-funksjonen alle nøklene og verdiene til elementene:

$languages ​​​​= array("Spania" => "Spansk", "France" => "Fransk", "Italia" => "Italiensk");

$languages ​​= array_flip($languages);

// $languages ​​​​= array("Spansk" => "Spania", // "Fransk" => "Frankrike", // "Italiensk" => "Italia");

Husk: array_flip() funksjon endres ikke rekkefølgen av matriseelementer. Funksjonen array_reverse() brukes til dette formålet.

Matrisestørrelse

Å ha informasjon om gjeldende matrisestørrelse kan ofte gjøre et skript mer effektivt. Matrisestørrelse brukes sannsynligvis oftest når det itereres over elementer:

$us_wine_producers = array("Washington". "New York", "Oregon", "California");

for (Si = 0; Si< sizeof ($us_wine_producers); $i++) :

skriv ut "$us_vinprodusenter[$i]";

Siden $us_wine_producers-matrisen er indeksert av heltall, kan vi bruke en for-løkke for å gå gjennom tellervariabelen ($i) og skrive ut hvert element i matrisen.

Størrelseof()-funksjonen returnerer antall elementer i en matrise. Størrelsen på ()-funksjonens syntaks er:

int sizeof(array array)

Du vil sannsynligvis se sizeof()-funksjonen mye i nettapplikasjonene dine. Nedenfor er et kort eksempel på bruken (forresten, forrige eksempel er også en standard bruk av sizeof()):

$pasta = array("sløyfer", "englehår", "rigatoni");

$pasta_size = sizeof($pasta);

// $pasta_size = 3

Sizeof()-funksjonen har også en annen utvidet form, count() (se nedenfor).

count()-funksjonen utfører samme operasjon som sizeof(); den returnerer antall verdier i en matrise. Syntaksen for count()-funksjonen er:

int count (blandet variabel)

Den eneste forskjellen mellom sizeof() og count() er at i noen situasjoner returnerer count() tilleggsinformasjon:

  • hvis variabelen eksisterer og er en matrise, returnerer count() antall elementer i matrisen;
  • hvis variabelen eksisterer, men ikke er en matrise, returnerer funksjonen 1;
  • hvis variabelen ikke eksisterer, returneres verdien 0.

array_count_values()

Funksjonen array_count_values() er en variant av sizeof() og count(). I stedet for det totale antallet elementer, teller den antall forekomster av hver verdi i matrisen. Syntaksen til funksjonen array_count_values() er:

array array_count_values(array array):

I den returnerte matrisen vil nøklene være verdiene til den originale matrisen, og verdiene vil være deres frekvenser:

$stater = аrrау("PÅ", "OK", "SA", "RA", "PÅ", "PÅ", "RA", "AK");

$state_freq = array_count_values($stater);

$state_freq-matrisen er fylt med følgende assosiative nøkkel/verdi-par:

$state_freq = аrrау("ON" => 3, "OK" => 1, "SA" => 1, "RA" => 2, "AK" => 1);

Sortering av matriser

Sortering tar viktig sted innen programmering og finnes ofte i praksis i slike internettapplikasjoner som kommersielle sider (sortering av produktkategorier i alfabetisk rekkefølge, sortering av priser) eller søkemotorer (sortering av programmer etter antall nedlastinger). Det er ni standard sorteringsfunksjoner i PHP (tabell 5.1), og hver funksjon sorterer en matrise på en bestemt måte.

Tabell 5.1. Sorteringsfunksjoner

Sortering

Omvendt rekkefølge

Lagring av nøkkel-/verdipar

Betydning

Betydning

Betydning

Betydning

Betydning

Betydning

Refererer til bruken av egendefinerte sorteringsfunksjoner der sorteringsrekkefølgen til en matrise avhenger av resultatene som returneres av den egendefinerte funksjonen.

Sortering av array-elementer er ikke begrenset til standardkriterier, siden tre funksjoner (usort(), uasort() og uksort()) lar deg angi egendefinerte kriterier og sortere informasjon på noen måte.

Den enkleste funksjonen sort() sorterer elementene i en matrise i stigende rekkefølge (fra minste til største). Syntaksen til sort()-funksjonen er:

void sort(array array)

Ikke-numeriske elementer er sortert alfabetisk i henhold til ASCII-koder. Følgende eksempel viser bruken av sort()-funksjonen i sortering:

// Lag en rekke byer.

// Sorter byer i stigende rekkefølge

// Gå gjennom innholdet i matrisen og skriv ut alle nøkkel/verdi-par.

for (reset($cities); $key = nøkkel ($cities); neste ($cities)):

print("byer[$key] = $byer[$key]
";

Denne kodebiten produserer følgende utdata:

byer = Aprilia

byer = Nettuno

byer = Venezia

Som du kan se, er $cities-arrayet sortert alfabetisk. En variant av denne sorteringsmetoden er implementert i asort()-funksjonen beskrevet nedenfor.

Funksjonen rsort() fungerer nøyaktig på samme måte som sort()-funksjonen, med ett unntak: array-elementene er sortert i omvendt rekkefølge. Syntaks for rsort()-funksjonen:

void rsort(array array)

La oss gå tilbake til $cities-arrayen fra forrige eksempel:

$cities array("Aprilia", "Nettuno", "Roma", "Venezia", ​​​​"Anzio");

byer = Venezia

byer = Nettuno

byer = Aprilia

$cities-arrayet er også sortert, men denne gangen i omvendt alfabetisk rekkefølge. En variant av denne sorteringsmetoden er implementert i arsort()-funksjonen beskrevet nedenfor.

Funksjonen asort() fungerer omtrent på samme måte som sort()-funksjonen nevnt ovenfor, men den beholder den opprinnelige assosiasjonen av indekser med elementer uavhengig av den nye rekkefølgen av elementene. Syntaks for asort()-funksjonen:

void asort(array array)

La oss gå tilbake til $cities-arrayen:

$byer = array("Aprilia", "Nettuno", "Roma", "Venezia", ​​​​"Anzio");

Som et resultat av å sortere $cities-matrisen ved hjelp av rsort()-funksjonen, vil elementene bli ordnet i følgende rekkefølge:

byer = Aprilia

byer = Nettuno

byer = Venezia

Vær oppmerksom på indeksene og sammenlign dem med de gitt i beskrivelsen av sort()-funksjonen. Dette er nettopp forskjellen mellom de to funksjonene.

arsort()-funksjonen er en variant av asort() som beholder den opprinnelige indekstilknytningen, men sorterer elementene i omvendt rekkefølge. Syntaks for arsort()-funksjonen:

void array(array array)

La oss bruke arsort()-funksjonen til å sortere $cities-arrayen:

$byer = array("Aprilia", "Nettuno", "Roma", "Venezia", ​​​​"Anzio");

arsort($byer);

byer = Venezia

byer[l] = Nettuno

byer = Aprilia

Vær oppmerksom på indeksene og sammenlign dem med de gitt i beskrivelsen av rsort()-funksjonen. Dette er nettopp forskjellen mellom de to funksjonene.

Funksjonen ksort() sorterer en matrise etter nøkkel, og bevarer de opprinnelige nøkkelverdi-assosiasjonene. Syntaks for ksort()-funksjonen:

void ksort(array array)

Tenk for eksempel på en matrise som er litt forskjellig fra den opprinnelige matrisen

$wine_producers = array ("America" ​​​​=> "Napa Valley",

"Italy" => "Toscana",

"Australia" => "Ruthgerlen",

"Frankrike" => "Loire",

"Chile" => "Rapel Valley");

Som et resultat av å sortere en matrise ved å bruke funksjonen ksort() vil elementene ordnes i følgende rekkefølge:

"America" ​​=> "Napa Valley"

"Australia" => "Ruthgerlen"

"Chile" => "Rapel Valley"

"Frankrike" => "Loire"

"Italia" => "Toscana"

Sammenlign resultatene av sortering av $wine_producers med sort()-funksjonen:

"America" ​​=> "Napa Valley"

"Australia" => "Toscana"

"Chile" => "Ruthgerlen"

"Frankrike" => "Loire"

"Italy" => "Rapel Valley"

Et mer enn tvilsomt resultat!

Krsort()-funksjonen er nesten den samme som ksort(), men nøklene er sortert i omvendt rekkefølge. Syntaks for krsort()-funksjonen:

void krsort(array $array)

La oss se på sortering av $wi reproducers-arrayen ved å bruke krsort()-funksjonen:

$wine_producers = array ("America" ​​​​=> "Napa Valley",

"Italy" => "Toscana",

"Australia" => "Ruthgerlen",

"Frankrike" => "Loire".

"Chile" => "Rapel Valley");

krsort($vinprodusenter);

Som et resultat av sortering vil elementene ordnes i følgende rekkefølge:

"Italia" => "Toscana"

"Frankrike" => "Loire"

"Chile" => "Rapel Valley"

"Australia" => "Ruthgerlen"

"America" ​​=> "Napa Valley"

Sorteringsfunksjonene beskrevet ovenfor vil trolig være tilstrekkelig i de fleste tilfeller. I noen situasjoner kan det imidlertid hende du må definere dine egne sorteringskriterier. I PHP er denne funksjonen implementert i tre standardfunksjoner: usort(), uasort() og uksort().

Usort()-funksjonen lar deg sortere en matrise basert på et kriterium definert av programmereren. For å gjøre dette, sendes usort() navnet på funksjonen som bestemmer sorteringsrekkefølgen som en parameter. Syntaksen for funksjonen usort() er:

void usort (array array, string function_name)

Matriseparameteren inneholder navnet på den sorterte matrisen, og funksjonsnavnparameteren inneholder navnet på funksjonen som sorteringen skal utføres på grunnlag av. La oss si at du har en lang liste med greske navn som du må huske for din kommende historieeksamen. Du vil sortere ordene etter lengde slik at du begynner med de lengste og så lærer de korte når du er sliten. For å sortere en matrise etter lengde kan du bruke funksjonen usort().

Oppføring 5.2. Definere sorteringskriterier for funksjonen usort().

$vocab = аrrау("Sokrates", "Aristophanes", "Platon", "Aischylos", "Thesmophoriazusae");

funksjon compare_length($str1, $str2) (

// Få lengden på de to neste ordene

$lengde1 = strlen($str1);

$lengde2 = strlen($str2);

// Bestem hvilken streng som har den korteste lengden

if ($lengde1 == $lengde2):

elseif ($length1< $length2) :

// Kall usort() som spesifiserer compare_length()-funksjonen

// som sorteringskriterium

usort($vocab, "compare_length") :

// Utdata sortert liste

while (liste ($key, $val) = hver ($vocab)) (

ekko "$val
";

I oppføring 5.2 definerer compare_length()-funksjonen hvordan matrisen skal sorteres. I dette tilfellet gjøres dette ved å sammenligne lengden på de overførte elementene. Kriteriefunksjonen må motta to parametere som representerer

array-elementer å sammenligne. Legg også merke til hvordan disse elementene implisitt overføres til kriteriefunksjonen når du kaller usort(), og hvordan alle elementene automatisk sammenlignes av denne funksjonen.

Funksjonene uasort() og uksort() er varianter av usort() med samme syntaks. Funksjonen uasort() sorterer en matrise etter brukerdefinerte kriterier mens den bevarer nøkkel/verdi-assosiasjoner. Funksjonen uksort() sorterer også matrisen etter egendefinerte kriterier, men den sorterer nøklene, ikke verdiene.

Andre nyttige funksjoner

Denne delen beskriver noen funksjoner som ikke tilhører noen spesifikk seksjon, men som utvilsomt er nyttige.

Funksjonen arrayjnerge() slår seg sammen fra 1 til N matriser, og kombinerer dem i henhold til rekkefølgen de er oppført i parameterne. Syntaksen for array_merge()-funksjonen er:

array array_merge(array array1, array array2, ..., array arrayN]

La oss se på et eksempel enkel forening arrays med arrayjnerge()-funksjonen;

$arr_1 = array("jordbær", "drue", "sitron");

$arr_2 = array("banan", "kakao", "lime");

$arr_3 = array("fersken", "oransje");

$arr_4 = array_merge ($arr2, $arr_1, $arr_3):

// $arr_4 = array("banan", "kakao", "lime", "jordbær", "drue", "sitron", "fersken", "oransje");

Array_slice()-funksjonen returnerer en del av en matrise hvis start- og sluttposisjoner er spesifisert av offset fra starten og en valgfri lengdeparameter. Syntaksen for array_slice()-funksjonen er:

array array_slice(array array, int offset [, int length])

  • Hvis forskyvningen er positiv, telles startposisjonen til det returnerte fragmentet fra begynnelsen av matrisen.
  • Hvis forskyvningen er negativ, telles startposisjonen til det returnerte fragmentet fra slutten av matrisen.
  • Hvis lengden ikke er spesifisert, inkluderer den returnerte matrisen alle elementene fra startposisjonen til slutten av matrisen.
  • Hvis en positiv lengde er spesifisert, består det returnerte fragmentet av det angitte antallet elementer.
  • Hvis en negativ lengde er spesifisert, ender det returnerte fragmentet innenfor det angitte antallet elementer fra slutten av matrisen.

Funksjonen array_spl ice() er vagt lik array_slice() -- den erstatter en del av matrisen, definert av en startposisjon og en valgfri lengde, med elementer av en valgfri matriseparameter. Syntaksen for array_splice()-funksjonen er:

array_splice(array input_array, int offset, , );

Parameterverdier er satt i henhold til visse regler:

  • Hvis forskyvningen er positiv, telles startposisjonen til det første elementet som skal fjernes fra begynnelsen av matrisen.
  • Hvis forskyvningen er negativ, telles startposisjonen til det første elementet som skal fjernes fra slutten av matrisen.
  • Hvis lengden ikke er spesifisert, fjernes alle elementer fra startposisjonen til slutten av matrisen.
  • Hvis en positiv lengde er spesifisert, består fragmentet som skal slettes av det angitte antallet elementer.
  • Hvis en negativ lengde er spesifisert, fjernes elementer fra matrisen fra startposisjonen til posisjonen som er den angitte avstanden fra slutten av matrisen.
  • Hvis replacement_array ikke er spesifisert, fjernes elementene spesifisert av offset og valgfri lengde fra matrisen.
  • Hvis en replacement_array er spesifisert, må den være innesluttet i en array()-konstruksjon (hvis den inneholder mer enn ett element).

La oss se på noen få eksempler som tydelig viser egenskapene til denne funksjonen. Disse eksemplene vil bruke $pasta-matrisen (se ovenfor) som forskjellige operasjoner vil bli utført på.

Fjerne alle elementer fra den femte posisjonen til slutten av matrisen:

$pasta = array_splice($pasta, 5);

Fjerne det femte og det sjette elementet:

$pasta = array_splice($pasta. 5, 2);

Bytte ut det femte og det sjette elementet med nye verdier:

$pasta = array_splice($pasta, 5, 2, array("element1", "element2"));

Fjerne alle elementer fra det femte til det tredje elementet fra slutten av matrisen:

$pasta = array_splice($pasta, 5, -3);

Som du kan se fra disse eksemplene, gir funksjonen array_splice() fleksibiliteten til å fjerne elementer fra en matrise med en minimumsmengde kode.

Shuffle()-funksjonen sorterer elementene i en matrise i tilfeldig rekkefølge. Syntaksen for shuffle()-funksjonen er:

void shuffle(array array);

Resultater

Dette kapittelet så på arrays og standard PHP-funksjoner for arbeid med arrays. Spesielt ble følgende temaer vurdert:

  • lage indekserte og assosiative arrays;
  • flerdimensjonale arrays;
  • visning av innholdet i flerdimensjonale arrays;
  • elementsøk;
  • legge til og fjerne elementer;
  • array størrelse;
  • sortering;
  • annen nyttige funksjoner for arbeid med arrays.

Arrays er veldig praktiske og universelle verktøy for å jobbe med data i webapplikasjoner. I eksemplene i senere kapitler vil arrays bli brukt gjentatte ganger for å forbedre effektiviteten og klarheten til koden.

I kapittel 6 vil vi fortsette å introdusere det grunnleggende om PHP. Denne gangen vi vil snakke om de objektorienterte egenskapene til språket.

Til tross for at arrays er ganske enkle å forstå, har mange mennesker problemer når de møter dem. Dette er grunnen til at jeg bestemte meg for å skrive litt om arrays for å fjerne skyggen av usikkerhet over dem. Jeg kan si at arrays er et av de elementene du rett og slett ikke kan klare deg uten i programmering. De forenkler mye og gjør koden mer lesbar og tydelig, og kan også spare deg for tid på å skrive denne koden. Hvorfor? Hvordan? Nå skal jeg fortelle deg alt.

Hva er en array?
Hvis du ikke gidder og forklarer i klart språk, så er en matrise en variabel som inneholder et hvilket som helst antall andre variabler, og disse kan på sin side også være matriser. Dermed kan matrisen rett og slett være gigantisk og inneholde mye informasjon. Og takk PHP-funksjoner for å jobbe med matriser blir de veldig praktiske å jobbe med. Sorter, rens, finn de riktige nøklene, sorter igjennom og mye mer.

Noen eksempler
La oss se på et eksempel:

$b = "test b" ; ?>

Her har vi laget to variabler

1
2
3

$test_array [ "a" ] = "test en" ;
$test_array [ "b" ] = "test b" ; ?>

Og her laget vi en matrise $test_array og laget 2 nøkler med noen verdier.
I utgangspunktet kan det virke som om alt med en array ser noe tungvint ut, men la oss forestille oss en situasjon når vi må vise 1000 variabler på skjermen. Hvis disse alle er separate variabler, kan vi bare skrive et helt ark mens vi skriver noe sånt som

1
2
3
4
5

ekko $b ;
ekko $c ;
ekko $d ;
... ?>

Men hvis alle disse variablene var matrisenøkler, ville vi ganske enkelt skrevet:

1
2
3

ekko $verdi ;
} ?>

Foreach-konstruksjonen itererer gjennom hver array-nøkkel etter tur, og $value inneholder verdien til den gjeldende array-nøkkelen. Er det virkelig praktisk? Og dette er bare det mest primitive eksemplet.

Sortering av data
En av de mest de beste måteneå bruke en matrise er å bruke den til å sortere data eller kombinere noen data, for ikke å bli forvirret senere. La oss se på eksemplet med biler. La oss si at vi har 2 biler og hver av dem har to interiøralternativer. Og hver har 3 mulige farger.

1
2
3
4
5
6
7
8
9
10
11
12
13

"Maskin1" => array(
"salong1" => array(
"color1" => "svart" ,
"color2" => "rød" ,
"color3" => "grønn"
),
"salong2"
),
"Machine2" => array(
//og så videre
); ?>

På denne måten får vi en matrise som inneholder 2 nøkler, maskin1 og maskin2. Hver av dem har to salonger, og hver salong har 3 farger. Og alt dette er veldig enkelt å komme til. For eksempel:

// vil gi ut "svart"?>

Søk
Som med alle data er søk viktig i matriser, og PHP gir en rekke funksjoner for å søke gjennom matriser. For eksempel sjekker funksjonen array_key_exists() om en bestemt nøkkel er i matrisen, og in_array()-funksjonen sjekker om en bestemt verdi er i matrisen. For de som ennå ikke har forstått, er all data i arrays lagret i formen nøkkel=verdi

La oss si at du har en idé om en PHP-array. Det er vanskelig å jobbe med arrays uten innebygde funksjoner. Du kan beskrive en funksjon for en spesifikk oppgave. Du kan bruke flere timer på å skrive funksjonene dine. Dette er en dårlig måte. Jeg foreslår at du leser bruksanvisningen på php.net. Jeg skrev flere funksjoner og etter en stund oppdaget jeg analoger på php.net. For eksempel søk etter et element i en matrise kan enkelt gjøres med funksjonen array_search()

//array_search() $array = array("name" => "Egor", "site" => "training.web", "description" => "php-trening"); $key = array_search("training.web", $array); ekko $nøkkel; // nettstedet

Funksjon in_array() returnerer TRUE hvis elementet finnes i matrisen. Matrisen kan stokkes tilfeldig ved å bruke shuffle()-funksjonen. Hvis du trenger å vise sitater på en nettside, bruk denne funksjonen. Array omvendt brukes ofte. Funksjonen array_reverse() vil hjelpe deg å reversere elementene i en matrise.

//in_array() $lang = array("PHP", "RUBY", "HTML", "CSS"); if (in_array("PHP", $lang)) ( echo "Funnet PHP"; ) //shuffle() $numbers = range(1, 10); var_dump($tall); //array(10) shuffle($numbers); print_r($tall); //Array ( => 8 => 4 => 9 => 6 => 5 // => 7 => 1 => 2 => 10 => 3) $numbers = range(1, 10); //array_reverse() $numbers = array_reverse($numbers); print_r($tall); //Array ( => 10 => 9 => 8 => 7 => 6 // => 5 => 4 => 3 => 2 => 1)

Den mest brukte funksjonen er count(). Den teller antall elementer i en matrise. Størrelseof()-funksjonen er utdatert. Noen ganger må du telle antall identiske elementer i en matrise. Funksjonen array_count_values() vil hjelpe. Du kan fylle en matrise med mange elementer og deretter bruke denne funksjonen. Hvis du beskriver en funksjon, vil du kaste bort mye tid. Feilsøkingsfunksjonen print_r() brukes veldig ofte. Den sender ut hele matrisen, uansett hvor stor og kompleks den er. For å få det siste elementet i matrisen, bruk følgende kode: $numbers[ count($numbers) - 1 ]. Du kan også bruke end()-funksjonen.

//count() $numbers = range(1, 10); $count = count($numbers); for($i=0; $i 3 => 2 => 1)

Implode()-funksjonen brukes veldig ofte. Hun setter sammen matriseelementer til en streng. Hvis du bruker ditt eget skilletegn, kan du dele opp matrisen og samle elementene i en streng. Du kan sette en høyre skråstrek "/" mellom matriseelementer. Du kan legge til en linje som denne på slutten av URL-en. Hvis du har en streng som ligner på en url da for å dele en streng bruk funksjonen explode().. Les om eksplosjonsfunksjonen i artikkelen How to split a string into an array explode() PHP. Ved hjelp av skilletegn konverteres strengelementer i en rad til matriseelementer. Med et ord blir strengdatatypen til en matrise.

Ru/egor/lesons //explode() $url = "trainingweb.ru/egor/lesons"; $arr = eksplodere("/", $url); print_r($arr); //Array ( => trainingweb.ru => egor => leksjoner)

Jeg liker array_map() funksjonen. Den bruker tilbakeringingsfunksjonen på alle elementene i matrisen. Du skriver en funksjon og bruker den i array_map()-funksjonen. Du kan legge til en til hvert element i en matrise. Du kan iterere gjennom arrayen på denne måten eller fjerne arrayen med unødvendige elementer.

//array_map() $numbers = range(1, 10); funksjon plussOne($num) ( $num += 1; return $num; ) $arr = array_map("plusOne", $numbers); print_r($arr); //Array ( => 2 => 3 => 4 => 5 => 6 // => 7 => 8 => 9 => 10 => 11)

Det hender at du må kaste en streng til en matrise. Dette gjøres ganske enkelt ved å bruke (array)-funksjonen. Jeg skal lage 2 strengvariabler. Deretter vil jeg gjøre variablene om til matriser og kombinere matrisene til en matrise. For å kombinere matriser til en felles matrise, er funksjonen array_merge() egnet. Du kan kombinere mange matriser til en matrise: array_merge($arr1, $arr2, $arr3, ...,).

Sist oppdatert: 1.11.2015

Matriser er designet for å lagre sett med data eller elementer. Hvert element i matrisen har sin egen unike nøkkel og verdi. Så la oss lagre listen over telefonmodeller i en matrise:

"; ?>

Her lages en array $phones med fire elementer. Hvert element i matrisen representerer et nøkkelverdi-par. Så det første elementet $phones = "Nokia N9" har en nøkkel - tallet 0, og en verdi - strengen "Nokia N9". I slike matriser kalles numeriske nøkler også indekser.

Du kan bruke funksjonen count() for å finne ut antall elementer i en matrise. Og på grunn av det faktum at tastene er i rekkefølge fra 0 til 3, og å vite størrelsen på matrisen, kan du vise matriseelementene i en for-løkke.

For å gjøre forholdet mellom nøklene og verdiene til elementene klarere, la oss skrive ut matrisen ved å bruke print_r-funksjonen:

Print_r($telefoner);

Vi vil få følgende utgang:

Array ( => Nokia N9 => Samsung Galaxy ACE II => Sony Xperia Z3 => Samsung Galaxy III)

Denne matriseopprettelsen vil også tilsvare følgende:

"; ?>

Hvis en elementnøkkel ikke er spesifisert, bruker PHP tall som nøkler. I dette tilfellet starter nummereringen av nøkler fra null, og hver ny tast øker med én.

Når vi kjenner nøkkelen til et element i en matrise, kan vi få tilgang til dette elementet, få eller endre verdien:

// få elementet ved tast 1 $myPhone = $phones; ekko "$myPhone
"; // tilordne en ny verdi $phones = "Samsung X650"; ekko "$phones
";

Men ikke bare heltall, men også strenger kan brukes som nøkler:

Slike arrays kalles også assosiativ.

array-operatør

En måte å lage en matrise på ble diskutert ovenfor. Men det er en annen, som involverer bruk av array()-operatoren.

Array()-operatoren tar et sett med elementer. Nøklene er heller ikke spesifisert her. Derfor nummererer PHP automatisk elementer fra null. Men vi kan også spesifisere en nøkkel for hvert element:

"iPhone5", "samsumg"=>"Samsung Galaxy III", "nokia" => "Nokia N9", "sony" => "Sony XPeria Z3"); echo $phones["samsumg"]; ?>

=>-operasjonen lar deg tilordne en nøkkel til en bestemt verdi.

Iterering over assosiative arrays

Ovenfor har vi sett på hvordan man bruker en for-løkke for å vise alle elementene i en matrise, der nøklene er spesifisert sekvensielt med tall fra 0 til 3. Dette fungerer imidlertid ikke med assosiative matriser. Og for dem har PHP en spesiell type loop - foreach...som:

"iPhone5", "samsumg"=>"Samsung Galaxy III", "nokia" => "Nokia N9", "sony" => "Sony XPeria Z3"); foreach($phones som $item) ekko "$item
"; ?>

I en foreach-løkke blir alle elementer sekvensielt fjernet fra matrisen og verdien deres plasseres i variabelen spesifisert etter nøkkelordet som. I dette tilfellet blir alle fire verdiene fra $phones-arrayet plassert i $item-variabelen etter tur. Når det siste elementet fra matrisen er hentet, avsluttes løkken.

Foreach-løkken lar deg hente ikke bare verdier, men også elementnøkler:

"iPhone5", "samsumg"=>"Samsung Galaxy III", "nokia" => "Nokia N9", "sony" => "Sony XPeria Z3"); foreach($phones as $key=>$value) ekko "$key => $value
"; ?>

Her, når du itererer gjennom elementene i løkken, vil nøkkelen til elementet bli overført til $key-variabelen, og verdien vil bli overført til $value-variabelen.

Et alternativ til hver løkke er å bruke listen og hver funksjon:

"iPhone5", "samsumg"=>"Samsung Galaxy III", "nokia" => "Nokia N9", "sony" => "Sony XPeria Z3"); while (list($key, $value) = each($phones)) ekko "$key => $value
"; ?>

While-løkken vil kjøre til hver funksjon returnerer false. Hver funksjon itererer gjennom alle elementene i $phones-matrisen og returnerer den som en matrise som inkluderer elementets nøkkel og verdi. Denne matrisen sendes deretter til listefunksjonen og matriseverdiene tildeles variablene innenfor parentesen. Når hver funksjon er ferdig med å iterere gjennom $phones-arrayen, vil den returnere false og while-løkken avsluttes.

Flerdimensjonale arrays

I de forrige eksemplene ble bare endimensjonale matriser vurdert, der elementverdiene representerte tall eller strenger. Men i PHP kan arrays også være flerdimensjonale, det vil si de der et element i arrayen i seg selv er en array. La oss for eksempel lage en flerdimensjonal matrise:

array("iPhone5", "iPhone5s", "iPhone6") , "samsumg"=>array("Samsung Galaxy III", "Samsung Galaxy ACE II"), "nokia" => array("Nokia N9", "Nokia Lumia 930"), "sony" => array("Sony XPeria Z3", "Xperia Z3 Dual", "Xperia T2 Ultra")); foreach ($phones som $brand => $items) ( echo "

$merke

"; ekko "
    "; foreach ($items som $key => $value) ( ​​ekko "
  • $verdi
  • "; ) ekko "
"; } ?>

Og når vi sender ut, får vi 4 lister:

For å få tilgang til et gitt element, må du også spesifisere nøklene i hakeparenteser. La oss for eksempel se på det første elementet i den første matrisen. Siden nøkkelen til den første matrisen er "eple" og nøkkelen til det første elementet i den første matrisen er tallet 0 (siden vi ikke spesifiserte nøklene eksplisitt):

Echo $phones["eple"];

Du kan få det andre elementet i den tredje matrisen på lignende måte:

Echo $phones["nokia"];

La oss si at nestede matriser også representerer assosiative matriser:

array("apple" => "iPhone5", "samsumg" => "Samsung Galaxy III", "nokia" => "Nokia N9"), "nettbrett" => array("lenovo" => "Lenovo IdeaTab A3500" , "samsung" => "Samsung Galaxy Tab 4", "apple" => "Apple iPad Air")); foreach ($technics som $tovar => $items) ( echo "

$produkt

"; ekko "
    "; foreach ($items som $key => $value) ( ​​ekko "
  • $nøkkel: $verdi
  • "; ) ekko "
"; ) // tilordne en annen verdi til ett av elementene $technics["phones"]["nokia"] = "Nokia Lumnia 930"; // vis denne verdien echo $technics["phones"]["nokia" ]; ? >