Korrekt array definition. Funktioner til at arbejde med php-arrays

1. Hvad er et PHP-array?
2. Eksempel PHP array?
3. En-dimensionel matrix (vektor)
- indeks
- associativ
4. Todimensionelt array (array i et array, matrix)
5. Funktioner til at arbejde med arrays (array i et array, matrix)

Begynde dette emne Jeg vil gerne bruge forsagte eksempler. Lad os sige, at vi overvejer nogle person. Han har fornavn, efternavn, adresse, telefonnummer, køn, højde, øjenfarve og så videre. Oplysninger om alle disse punkter kan tilskrives en række data om en person.

Arrayet kan være af en anden type uden nogen specifikationer om emnerne. Der vil kun være et emne. Lad os sige dette web programmering. Og elementerne vil være sprog - HTML, CSS, JavaScript, PHP, MySQL. Der er 5 elementer i alt.

Baseret sidste eksempel antag et array:

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

Se nu på dette eksempel og analyser de grundlæggende begreber.

Array i PHP er et sæt sekventielt lokaliserede data af samme type, relateret til et fælles tema, hvis antal elementer er faste.

Array ind i dette eksempel vil blive kaldt web programmering.

Hvert element har sit eget ordenssted, identifikator.
Indeks(array nøgle) - enten serienummer, eller tekst værdi, hvorved elementet kan identificeres.

Indekserne i eksemplet ovenfor ville være numerisk værdi fra 1 til 5. Når vi tilgår indeks 2, vil vi se CSS.

Eksempel på et array i PHP

Lad os nu se på ovenstående eksempel i PHP syntaks, ikke det russiske sprog. Lad os sige, at arrayet kaldes kortere - web. De firkantede parenteser vil indsætte et indeks.

Lad os se på et simpelt eksempel på et array, hvor indeksværdierne vil indeholde numeriske værdier, og vi vil oprette arrayet, som om vi tildeler værdier til variabler.

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

$web; // denne variabel indeholder et array med 5 elementer

// for at vise et af array-elementerne, skal du blot angive indekset i arrayet
echo $web; // output PHP

En-dimensionel array

INDEKSARRAY

Ovenfor, med webprogrammering, så vi bare på et eksempel på et endimensionelt array.
Det er sjældent skabt på denne måde. Det viser snarere visuelt strukturen af ​​arrayet. Oftere tyr de til en anden metode.

$web=array('HTML','CSS','JavaScript','PHP','MySQL');
echo $web; // vil udskrive 'HTML'
echo $web; // vil udskrive 'JavaScript'
echo $web; // vil udskrive 'PHP'

Hvis du vil indstille indeksværdier, skal du angive dem som følger. Skilt => er en pointer til at tildele et indeks til en værdi eller omvendt til en indeksværdi.

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

I det følgende eksempel vil vi ikke angive et indeks.

$day='mandag'; // indeks 0
$day='tirsdag'; // 1
$day='Onsdag'; // 2
$day='torsdag'; // 3
$day='fredag'; // 4
Du kan se, at sekventiel udfyldning sker fra bunden.

TILHØRENDE ARRAY

Ofte er der behov for at oprette et bogstavindeks for et array-element. Som jeg nævnte ovenfor, bør et sådant indeks bestå af latinske bogstaver, og navnet skal være sat i anførselstegn. Lad os se på eksemplet med en person.

$user['nick']='Logik';
$user['name']='Pavel';
$user['age']='25';
$user['sex']='Mand';

$bruger; // $user-variablen indeholder et array med 4 elementer med bogstavindekser

// vis array-elementet, hvilket angiver det bogstavindeks
echo $web['navn']; // vil udskrive 'Pavel'
Som du kan se, er alt ret simpelt. Vi citerer kun indeksværdien.

Todimensionelt array

Hvis du gik glip af den første del med One-Dimensional Array, anbefaler jeg dig kraftigt at læse den.
For at sige det enkelt er det et array i et array. Det vil sige, at elementerne i et stort array er forskellige. Sådanne arrays sænker virkelig scriptet, idet det indlæses vædder, derfor for hurtig behandling Der er oprettet databaser for lignende datagrupper (Hvad er en database?), men mere om det senere. Lad os se på et eksempel på et todimensionelt array.

// array med navne på dele af verden
$m = array('Europa','Asien','Afrika','Amerika','Australien og Oceanien');

// array med navne på lande
$s = array('Rusland','Ukraine','Hviderusland','Kasakhstan');

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

// skabe et todimensionelt array Geografi
$geografi = array($m, $s, $c);
?>
Inkluderede arrays kan, som du har bemærket, have et andet antal elementer. Af delen om endimensionelle arrays følger det, at hvert element i arrayet kan have et indeks. Så lad os tildele en forskellig værdi til hvert inkluderet array.

For at gøre dette skal du udvide den sidste linje og skrive den som følger.

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

Funktioner til at arbejde med php-arrays

For hver er en cyklisk funktion til at arbejde med arrays, hvor antallet af cyklusser er lig med antallet af array-elementer.

Det ser sådan ud:

PHP kode

foreach (matrix som $key=>$value)
hold;
Nå, med det samme et eksempel på arbejde

// opret et array med berømt IT
$names["Ritchie"] = "Dennis";
$names["Thompson"] = "Ken";
$names["Gates"] = "Bill";
$names["Jobs"] = "Steve";

foreach ($names som $key => $value) (
echo "$værdi $nøgle";
}
?>
Scriptet vises på skærmen

Dennis Ritchie
Ken Thompson
Bill Gates
Steve Jobs
Tælle— en funktion, der returnerer antallet af elementer i arrayet.

echo count($navne); // i vores eksempel med IT vil returnere værdien 4
Sortere— en funktion, der sorterer array-elementer. Praktisk i tilfælde af numeriske værdier indeks.
Arsort- en funktion, der sorterer array-elementer i omvendt rækkefølge.

sort($navne); // sorterer i rækkefølge. Det er praktisk, hvis der er tal i indekset
arsort($navne); // sorter i omvendt rækkefølge. Det vil sige, at ved indeks vil elementerne være i rækkefølgen 3, 2, 1, 0
Frakoblet er en funktion, der fjerner et array-element.

unset($array); // fjerner array-element med indeks 2
unset($array); // sletter hele arrayet
Array_search— søgefunktion i et array.

Lektion 7. Arrays i PHP

Har to argumenter. Kort sagt har den array_search('hvad', hvor)

$animals='hund';
$animals='kat';
$animals='fugl';
echo array_search('kat',$dyr); // vil vise indekset for elementet - nummer 2
Bland er en funktion, der blander tasterne til matrixværdierne.

shuffle($dyr); // vil arrangere elementerne i tilfældig rækkefølge
Tak for din opmærksomhed!

Forrige artikel
Lektion 6. Loops i PHP Næste artikel
Lektion 8. Herunder en fil i PHP. Inkluder og kræve

Kommentarer til artiklen (vk.com)

Opretter et tomt array.

Du kan dumpe værdierne ind i et array senere, sådan her:

dette øjeblik$myArray indeholder "træ", "hus" og "hund". Hver af de ovenstående kommandoer tilføjer til arrayet og bevarer de elementer, der allerede var der.

Når jeg kommer fra andre sprog, virkede denne måde at tilføje et array på mærkelig for mig. Jeg havde forventet at lave noget som $myArray+="dog" eller noget...

eller måske en "add()"-metode som samlinger Visual Basic. Men denne direkte tilføjelsessyntaks er kort og praktisk.

Du bør faktisk bruge unset()-funktionen til at fjerne elementer:

... vil fjerne "hus" fra arrayet (arrays er nul-baserede).

Grundlæggende om at arbejde med arrays i PHP

... vil ødelægge hele arrayet.

For at være klar, er syntaksen tom firkantet beslag at tilføje til et array er blot en måde at fortælle PHP om automatisk at tildele sænkede værdier til hver værdi i stedet for at tildele sænkede numre. Coverings, PHP gør faktisk dette:

Du kan selv tildele indekser, hvis du vil, og kan bruge de tal, du vil. Du kan også tildele indeksnumre til nogle elementer og ikke andre. Hvis du gør dette, vil PHP udfylde de manglende indekstal, stigende fra begyndelsen stort værelse indeks tildelt efterhånden som det ankommer.

Så hvis du gør dette:

... elementet "hund" vil blive tildelt indeksnummer 21. PHP udfører ikke intelligent mønstermatching for at tildele indekser et efter et, så det ved ikke, at du måske ønsker at tildele indeksnummer 30 til "hund." Du kan bruge andre funktioner til at angive stigningsmønsteret for et array. Jeg vil ikke gå ind i det, men det er alt sammen i PHP-dokumenterne.

På nogle andre sprog (f.eks. AS3) er det blevet bemærket, at initialisering af et nyt array er hurtigere, hvis det gøres som en snarere end med henblik på oprettelse og instansiering af objekter. Jeg spekulerer på, om der er nogen ækvivalenser i PHP?

Arrays i PHP. Arbejde med arrays i PHP.

Denne artikel dækker arbejdet med arrays i PHP (grundlæggende). Arrays i PHP er en datatype, der giver dig mulighed for at gemme flere variabler i én.

Her er et enkelt eksempel:

I eksemplet ovenfor er $products et array, hvor vi har gemt flere forskellige produkter. Dernæst udledte vi alle disse produkter og fik adgang til hver gennem "indekser" (nøgler): 0, 1 og 2.

Individuelle værdier kan selvfølgelig også gemmes i separate variabler, for eksempel som dette:

Det er selvfølgelig godt, men lad os forestille os, at vi pludselig skulle igennem alle disse elementer. Hvordan kan vi være her? Skriv kode for hver variabel? Det er langt og ubelejligt. Løsningen er at bruge arrays.
Ved hjælp af loops kan vi få adgang til det næste element ved hver iteration (trin), takket være indekser (nøgler).

Oprettelse af et array i PHP.

Der er ingen grund til at erklære et array i PHP. Vi kan oprette et array ved hjælp af array()-funktionen:

I I dette tilfælde vi har oprettet et tomt array. Hvis vi angiver flere værdier i parentes adskilt af kommaer, så udfylder vi givet array flere elementer:

Typer af arrays.

1. "Indekserede" arrays eller "auto-arrays". Vi har allerede givet eksempler på et sådant array ovenfor. Et særligt træk ved disse arrays er, at de har numeriske indeks, der oprettes automatisk ("on the fly"). Nummereringen af ​​elementer starter fra 0.

Sådan bestemmes længden (størrelsen) af et indekseret array.

Brug af arrays

Brug af funktionen tælle():

Optælling af elementer. Du kan opregne alle elementerne i et autoarray ved hjælp af konstruktionen til eller for hver:

At tilføje nyt element til et array (skriv til et array), skal vi blot udføre følgende linje:

Gennemløber alle elementer associativ array udføres som følger:

3. Multidimensionelle arrays indeholder andre arrays som elementer:

Vi kan også skabe et tredimensionelt array:

udlæsning af et array i PHP. Du kan vise ethvert array ved hjælp af funktionen print_r(), For eksempel:

Men når et element slettes, forbliver indeksene for andre elementer uændrede.

Funktioner til at arbejde med arrays:

Sortering af arrays
array_search – søg efter en værdi i et array

Et array er en samling af objekter, der har samme størrelse og type. Hvert objekt i arrayet kaldes element i arrayet. Det er nemt at oprette et nyt array i PHP. Når du erklærer et indekseret array, placeres et par firkantede parenteser () efter variabelnavnet:

$languages ​​= "Spansk";

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

Du kan derefter tilføje nye elementer til arrayet, som vist nedenfor. Bemærk venligst, at nye elementer tilføjes uden eksplicit at angive et indeks. I dette tilfælde tilføjes det nye element i en position svarende til længden af ​​arrayet plus 1:

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

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

Derudover kan nye elementer tilføjes på en bestemt position i arrayet. For at gøre dette skal du angive indekset for det første element:

$languages ​​​​= "Italiensk";

$languages ​​​​= "Fransk";

Associative arrays oprettes på lignende måde:

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

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

Når du opretter arrays, bruges tre standardsprogkonstruktioner:

  • array();
  • liste();
  • rækkevidde().

Selvom alle tre tilfælde resulterer i det samme resultat, skaber et array, i nogle tilfælde kan ét design være at foretrække frem for de andre. Nedenfor er beskrivelser og eksempler på brug af hvert design.

array()-funktionen får nul eller mere elementer og returnerer et array bestående af specificerede elementer. Dens syntaks er:

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

Array() er sandsynligvis bare en mere visuel stenografi til at skabe et array, brugt til programmør bekvemmelighed. Nedenfor er et eksempel på brug af array() til at oprette et indekserbart array:

$languages ​​​​= array("Engelsk". "Gælisk". "Spansk");

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

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

Her er, hvordan array() bruges til at oprette associative arrays:

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

"Ireland" => "Gælisk".

"USA" => "Engelsk");

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

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

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

Associative arrays er især nyttige i situationer, hvor numeriske indekser ikke har en logisk overensstemmelse. For eksempel er landenavne i det foregående eksempel ganske naturligt forbundet med sprog. Prøv at implementere denne logiske forbindelse ved hjælp af tal!

List()-konstruktionen ligner array(), men dens hovedformål er samtidig at tildele værdier ekstraheret fra en matrix til flere variabler på én gang. List() kommandosyntaks:

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

List()-konstruktionen er især nyttig, når du læser information fra en database eller fil. Lad os sige, at du vil formatere og udlæse data læst fra tekstfil. Hver linje i filen indeholder oplysninger om brugeren (navn,

erhverv og yndlingsfarve); Komponenterne i en post er adskilt af en lodret streg (|). Typisk linje ser sådan ud:

Nino Sanzi|Professionel golfspiller|grøn

Ved at bruge list() kan du skrive en simpel løkke, der læser hver linje, tildeler dens komponenter til variabler og formaterer og viser dataene. Listen nedenfor viser muligheden for samtidigt at tildele til flere variabler ved hjælp af list():

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

// Split strengen ved hjælp af split().

// Komponenter er tildelt til Sname-variabler. $besættelse og Scolor.

liste ($navn, $occupation, $color) = split("|", $line);

// Formater og udlæs data

print "Navn: Snavn
";

print "Beskæftigelse: Beskæftigelse
";

print "Favoritfarve: Farve
";

Hver linje i filen læses, formateres og udlæses som følger:

Navn: Nino Sanzi

Beskæftigelse: Professionel golfspiller

Yndlingsfarve: grøn

I eksemplet ovenfor afhænger brugen af ​​list() af at opdele strengen i elementer ved hjælp af split()-funktionen. Elementerne, der er et resultat af divisionen, tildeles variablerne henholdsvis $navn, $occupation og $color. Så handler det hele om at formatere dataene til output i en bestemt browser. Praktiske værktøjer til leksikalsk analyse af tekstfiler er et af de styrker PHP. Dette emne er behandlet detaljeret i kapitel 7 og 8.

Range()-konstruktionen giver dig mulighed for hurtigt og nemt at oprette en række heltal fra et interval defineret af en øvre og nedre grænse. Range() returnerer en matrix bestående af alle heltal i det angivne interval. range() syntaks:

matrixområde (int lower_bound, int upper_bound)

Følgende eksempel viser tydeligt, hvor praktisk dette design er:

$lotteri = range(0.9);

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

Som det kan ses af ovenstående fragment, specificerede range() parametrene et interval fra 0 til 9, og $lottery-arrayet var fyldt med heltal fra dette interval.

Multidimensionelle arrays

Med tiden vil dine programmer blive mere komplekse, og simple endimensionelle arrays vil ikke være nok til at gemme den nødvendige information. Multidimensionelt array(array af arrays) giver programmøren mere effektive midler til lagring af information, der kræver yderligere strukturering. Det er nemt at oprette et flerdimensionelt array – tilføj blot et ekstra par firkantede parenteser for at tvinge arrayet til en ny dimension:

$chessboard = "Konge"; // Todimensionelt array

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

$streets["USA"]["Ohio"]["Columbus"] = "Harrison"; // Tredimensionelt array

Som et eksempel kan du overveje et array, der gemmer oplysninger om desserter og funktionerne i deres tilberedning. Det ville være ret svært at klare sig med et en-dimensionelt array, men et to-dimensionelt array passer perfekt:

$desserter = array(

"Fruit Cup" => array (

"kalorier" => "lav",

"serveret" -> "kold",

"forberedelse" => "10 minutter"

"Brownies" => array (

"kalorier" -> "høj",

"served" => "rygende varm",

"forberedelse" => "45 minutter"

Efter oprettelse af et array, kan dets elementer tilgås ved hjælp af de tilsvarende taster:

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

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

Tildeling af værdier til elementer i flerdimensionelle arrays udføres på samme måde som i endimensionelle arrays:

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

// Indstiller egenskaben "kalorier" for objektet "Kage" til "for mange"

Selvom nye niveauer dukker op i multidimensionelle arrays logisk organisation data, skabes multidimensionelle arrays på næsten samme måde som endimensionelle. Referencer til flerdimensionelle arrays i strenge kræver dog særlig opmærksomhed; Det næste afsnit er viet til dette emne.

Referencer til multidimensionelle arrays

print "Brownies er gode, men kalorieindholdet er ".

$desserter["Brownies"]["kalorier"];

print "Brownies er gode, men kalorieindholdet er det

($desserter)";

Bemærk fraværet af anførselstegn omkring tasterne. Du skal også huske, at der ikke skal være ekstra mellemrum mellem de krøllede seler og linket. Hvis mindst én af disse betingelser ikke er opfyldt, vil der opstå en fejl. Begge metoder er dog velegnede. Jeg anbefaler, at du vælger et format og holder dig til det for at få dine programmer til at se mere konsekvente ud. Hvis Brug ikke Med enhver af disse formateringsmetoder vil referencer til multidimensionelle arrays blive fortolket bogstaveligt, hvilket sandsynligvis vil føre til uventede resultater.

Find array-elementer

At søge efter elementer er en af ​​de vigtigste operationer med arrays. Der er flere i PHP standard funktioner, hvilket gør det nemt at finde i arrayet de nødvendige nøgler og betydninger.

Funktionen i n_array() kontrollerer, om et givet element er til stede i arrayet. Hvis søgningen lykkes, returnerer funktionen TRUE, ellers returnerer den FALSK. Syntaksen for funktionen in_array() er:

bool in_array(blandet element, array array)

Denne funktion er især praktisk, fordi du ikke behøver at gå gennem hele arrayet på jagt efter det ønskede element. I det følgende eksempel søger funktionen in_array() efter elementet "Russian" i $languages-arrayet:

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

$exists = in_array("Russisk", $languages); // $exists er sat til FALSE

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

Funktionen in_array() findes ofte i kontrolkonstruktioner, hvor dens returværdi (TRUE/FALSE) bruges til at vælge en af ​​to fortsættelsesmuligheder. Følgende eksempel bruger funktionen in_array() til at vælge en af ​​to muligheder i en betinget if-sætning:

// Brugerinput

$language = "Fransk"; $email = " [e-mail beskyttet]";

// Hvis sproget er til stede i arrayet

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

// Tilmeld brugeren nyhedsbrevet.

// Bemærk venligst: PHP har ikke en standardfunktion navngivet

// subscribe_user(). I dette eksempel simulerer denne funktion blot

// abonnementsproces.

subscribe_user($email, $language);

print "Du er nu tilmeldt $language-udgaven af ​​nyhedsbrevet.";

// Sprog er ikke i arrayet

print "Vi beklager, men vi tilbyder endnu ikke en $language-udgave af nyhedsbrevet".

Hvad sker der i dette eksempel? Lad os sige, at variablerne $language og $email indeholder brugerinput. Du vil sikre dig, at det angivne sprog understøttes af dit system og bruge funktionen in_array() til dette formål. Hvis sprognavnet er til stede i arrayet, abonnerer brugeren på nyhedsbrevet og modtager en tilsvarende besked. Ellers melder programmet, at nyhedsbrevet ikke distribueres på det angivne sprog. Selvfølgelig skal brugeren i et rigtigt program ikke gætte, hvilke sprog dit program understøtter. Problemet løses ved hjælp af en rulleliste - dette emne diskuteres i detaljer i kapitel 10. Her demonstrerer dette eksempel blot mulighederne for at arbejde med arrays.

Funktionen array_keys() returnerer et array, der indeholder alle nøglerne i det originale array, der er sendt som en parameter. Hvis opkaldet passerer den ekstra search_item parameter, returneres kun nøgler, der matcher den givne værdi; ellers returneres alle array-nøgler. Syntaksen for array_keys()-funktionen er:

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

Lad os se på et eksempel på brug af array_keys()-funktionen til at få nøglen til et givet element:

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

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

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

$store_labels = array_keys($store_vine);

// $great_labels = array("Australien", "Frankrig", "Østrig");

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

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

Funktionen array_keys() gør det meget nemt at få alle nøglerne til et associativt array - for eksempel var det i det foregående tilfælde navnene på de lande, hvor forskellige typer vin produceres.

Funktionen array_values() returnerer et array, der består af alle værdierne i det originale array, der er sendt som en parameter. Syntaksen for array_values()-funktionen er:

array array_values(array array)

Lad os gå tilbage til det forrige eksempel, hvor funktionen array_keys() blev brugt til at få alle nøgleværdierne. Denne gang returnerer array_values()-funktionen alle de værdier, der svarer til nøglerne:

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

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

// "Østrig" => "Feiler Artinger 97");

$store_labels = array_values($store_vine);

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

// "Comte George de Vogue 97",

// "Feiler Artinger 97");

Funktionerne array_keys() og array_values() komplementerer hinanden, så du kan få alle komponenterne på den ene eller anden side af et associativt array, hvis det er nødvendigt.

Tilføjelse og fjernelse af elementer

Heldigvis behøver du i PHP ikke at angive et maksimalt antal elementer, når du opretter et array. Dette giver dig mere fleksibilitet, når du opererer på arrays, fordi du ikke behøver at bekymre dig om ved et uheld at overskride arrayet, hvis antallet af elementer overstiger en forventet tærskel. Der er flere funktioner i PHP til at øge størrelsen af ​​et array. Nogle af dem blev skabt for at gøre det nemmere for programmører, der er vant til at arbejde med forskellige typer køer og stakke (FIFO, FILO osv.), hvilket afspejles i navnene på funktionerne (push, pop, shift og unshift). Men selvom du ikke ved, hvad en "kø" eller "stak" er, skal du ikke bekymre dig - der er ikke noget kompliceret ved disse funktioner.

En kø er en datastruktur, hvorfra elementer hentes i den rækkefølge, de modtages. En stak er en datastruktur, hvorfra elementer hentes i omvendt rækkefølge af deres ankomst.

Funktionen array_push() tilføjer (det vil sige tilføjer til slutningen af ​​arrayet) et eller flere nye elementer. Syntaksen for array_push()-funktionen er:

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

Længden af ​​et array stiger i direkte forhold til antallet af dets elementer. Dette er demonstreret 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")

Funktionen array_push() har ligesom mange standard PHP-funktioner en "dobbelt" - array_push()-funktionen, designet til at hente elementer fra et array. Den største forskel mellem disse funktioner er, at array_push() kan tilføje flere elementer ad gangen, mens array_push() kun fjerner elementer et ad gangen.

array_pop()

Resultatet af array_push()-funktionen er præcis det modsatte af array_push() - denne funktion henter (det vil sige fjerner) det sidste element fra arrayet. Det udtrukne element returneres af funktionen. Syntaks for app_op()-funktionen:

array_pop(array array)

Hver gang appray_pop() udføres, reduceres størrelsen af ​​arrayet med 1. Lad os 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");

Funktionerne array_push() og array_pop() er nyttige, fordi de giver dig mulighed for at udføre operationer på elementer og kontrollere størrelsen af ​​et array uden at bekymre dig om uinitialiserede eller tomme elementer. Denne løsning fungerer meget mere effektivt end programmørens forsøg på at kontrollere disse faktorer.

Funktionen array_shift() ligner array_shift() med én forskel: elementet fjernes fra begyndelsen (venstre kant) af arrayet. Alle andre elementer i arrayet flyttes en position til begyndelsen af ​​arrayet. Funktionen array_shift() har samme syntaks som array_shift():

array_shift(array array)

Når du arbejder med array_shift()-funktionen, skal du huske, at elementer fjernes fra begyndelsen af ​​arrayet, som det følgende eksempel viser:

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

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

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

Funktionen array_unshift() komplementerer array_shift() ved at indsætte et nyt element i begyndelsen af ​​arrayet og flytte de resterende elementer en position til højre. Kommandosyntaksen for array_unshift() er:

1nt array_unshift(array array, blandet variabel1 [....variabel2])

Med et funktionskald kan du tilføje et eller flere elementer, og størrelsen af ​​arrayet øges i forhold til antallet af tilføjede elementer. Eksempel på tilføjelse af flere elementer:

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

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

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

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

Funktionen array_pad() giver dig mulighed for hurtigt at vokse et array til den ønskede størrelse ved at udfylde det med standardelementer. Syntaksen for array_pad()-funktionen er:

array arrap_pad (array array, int størrelse, blandet værdi):

Parameter størrelse definerer den nye længde af arrayet. Parameter betyder angiver standardværdien, der er tildelt elementer på alle nye positioner i arrayet. Der er nogle ting at overveje, når du bruger array_pad():

Hvis størrelse er positiv, er arrayet polstret til højre, og hvis det er negativt, er arrayet polstret til venstre.

Hvis parameterens absolutte værdi størrelse er mindre end eller lig med længden af ​​arrayet, udføres ingen handling.

Den absolutte værdi (modul) af et heltal er dets værdi uden fortegn. For eksempel er den absolutte værdi af tallene 5 og -5 5.

Eksempel på tilføjelse af et array fra slutningen:

$vægte = array_pad($vægte. 10, 100);

// Resultat: $vægte = matrix(1, 3, 5, 10, 15, 25, 50, 100, 100, 100);

Eksempel på tilføjelse af et array fra begyndelsen:

$vægte = matrix(1, 3, 5, 10, 15, 25, 50);

$vægte = array_pad($vægte, -10, 100);

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

Forkert forsøg på at tilføje et array:

$vægte = matrix(1, 3, 5, 10, 15, 25, 50);

$vægte = array_pad($weigtits, 3, 100);

// $weights-arrayet ændres ikke:

// $vægte = matrix(1, 3, 5, 10, 15, 25, 50);

Iteration over elementer

PHP har flere standardfunktioner designet til at iterere gennem array-elementer. Tilsammen giver disse funktioner et fleksibelt og praktisk middel til hurtig behandling og visning af indholdet af arrays. Du vil sandsynligvis bruge disse funktioner meget, da de danner grundlaget for næsten alle array-algoritmer.

Funktionen reset() flytter den interne markør til den aktuelle position i arrayet til det første element. Derudover returnerer det værdien af ​​det første element. Nulstil() funktionssyntaks:

blandet nulstilling (array array)

Overvej følgende array:

$fruits = array("æble", "appelsin", "banan");

Lad os sige, at den aktuelle positionsmarkør i dette array er sat til elementet "orange". Hold:

$a_fruit = nulstil($frugter);

vil returnere en pointer til begyndelsen af ​​arrayet, det vil sige elementet "æble", og vil returnere denne værdi, hvis resultatet af reset()-kaldet bruges i programmet. En forenklet version af opkaldet er også mulig:

I dette tilfælde flyttes markøren til det første element i arrayet, og returværdien bruges ikke.

Funktionen each() gør to ting, hver gang den kaldes: den returnerer nøgle/værdi-parret, der refereres til af den aktuelle positionsmarkør, og den flytter markøren til det næste element. Syntaks for hver() funktion:

array hver (array array)

For nemheds skyld returnerer each() nøglen og værdien som en matrix af fire elementer; nøglerne i dette array er 0, 1, værdi og nøgle. Den returnerede nøgle er knyttet til nøgle 0 og nøgle, og den returnerede værdi er knyttet til nøgle 1 og værdi.

I det følgende eksempel returnerer funktionen each() elementet på den aktuelle position:

// Erklærer en matrix af fem elementer

$krydderier = array("persille", "salvie", "rosmarin", "timian", "peber");

// Indstil markøren til det første element i arrayet

// Opret et array $a_sp1ce. firedelt

$a_krydderi = hver($krydderier);

Som et resultat af at udføre ovenstående fragment, vil $a_spice-arrayet indeholde næste par"nøgle/værdi":

  • 0 => 0;
  • 1 => "persille";
  • nøgle => 0;
  • værdi => "persille".

Efter dette kan strengen "persille" udsendes af en af ​​følgende kommandoer:

print $a_spice: print $a_spice["værdi"];

Funktionen each() bruges typisk i kombination med list() i looping-konstruktioner for at iterere gennem alle eller nogle af elementerne i en matrix. Ved hver iteration returnerer each() enten det næste nøgle/værdi-par eller en boolesk falsk, når den nås sidste element array. Lad os vende tilbage til $spices-arrayet; For at få vist alle elementer på skærmen kan du bruge følgende script:

// Nulstil den aktuelle positionsmarkør

// Opregn nøgle/værdi-par, begræns outputtet til værdien

while (liste ($nøgle, $val) = hver ($krydderier)):

udskriv "$val
"

Nedenfor er et mere interessant eksempel på brug af each() i kombination med de andre funktioner, der er beskrevet i dette kapitel. Liste 5.1 viser, hvordan man bruger disse funktioner til at vise en formateret tabel over lande og sprog.

Fortegnelse 5.1. Opbygning af en HTML-tabel ud fra indholdet af et array

// Erklærer en associativ række af lande og sprog $languages ​​= matrix ("Land" => "Sprog",

"Spain" => "Spansk",

"USA" => "Engelsk",

"France" => "Fransk",

"Russia" => "Russisk");

// Start en ny tabel

Print "

";

// Flyt markøren til det første elements position

$hdl = nøgle($sprog);

Shd2 = $languages[$hd1];

// Vis den første nøgle og element som tabeloverskrifter

Print "

";

næste($sprog);

// Udskriv tabelrækker med nøgler og array-elementer

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

Print "

";

// Afslut tabellen print "

$hd1$hd2
Scry$lang
";

Kørsel af denne kode produceres følgende HTML-tabel.

Land

Sprog

Spanien spansk
USA engelsk
Frankrig fransk
Rusland Russisk

Dette eksempel giver en idé om PHP's største styrke - dens evne til at kombinere dynamisk kode med HTML for at producere en visuel, formateret repræsentation af de data, den læser.

End()-funktionen flytter markøren til positionen for det sidste element i arrayet. end() funktion syntaks:

ende (array array)

Funktionen next() flytter markøren én position frem og returnerer derefter elementet ind ny stilling. Hvis som følge af forskydning

markøren vil gå ud over arrayet, next() returnerer false. Næste() funktionssyntaks:

blandet næste (array array)

Ulempen ved funktionen next() er, at den returnerer false for eksisterende, men tomme matrixelementer. Hvis du vil lave en almindelig søgning, skal du bruge funktionen each() .

Prev()-funktionen ligner next() med én undtagelse: den flytter markøren en position til begyndelsen af ​​arrayet og returnerer derefter elementet til den nye position. Hvis forskydningen placerer markøren før det første element i arrayet, vil prev() returnere false. Syntaksen for funktionen prev() er:

blandet forrige (array array)

Ulempen ved funktionen prev() er, at den returnerer falsk for eksisterende, men tomme matrixelementer. Hvis du vil lave en almindelig søgning, skal du bruge funktionen each() .

Funktionen array_walk() giver dig mulighed for at anvende en funktion på flere (eller muligvis alle) elementer i et array. Syntaksen for array_walk()-funktionen er:

int array_walk(array array, streng funktionsnavn [, blandede data])

Funktionen specificeret af funktionsnavn kan bruges til forskellige formål, såsom at finde elementer med bestemte karakteristika eller ændre indholdet af et array. I associative arrays skal funktionsnavn-funktionen modtage mindst to parametre - et array-element og en nøgle. Hvis de valgfri tredje parameterdata er angivet, bliver de den tredje parameter. Følgende eksempel bruger funktionen array_walk() til at fjerne dubletter fra et array:

funktion delete_dupes($element) (

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

unset($element); andet. ""

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

array_walk($emails,"delete_dupes");

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

Funktionen array_reverse() giver dig mulighed for nemt at vende rækkefølgen af ​​de elementer, der udgør en matrix. Syntaksen for array_reverse()-funktionen er:

array array_reverse(array array)

Lad os se på et eksempel på brug af array_reverse()-funktionen:

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

$us_vinproducenter - array_reverse(Sus_vinproducenter);

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

Når du kalder array_reverse() på et associativt array, bevares nøgle/værdi-parrene, kun rækkefølgen af ​​array-elementerne ændres.

Funktionen array_flip() vender nøglerne og værdierne af array-elementer. Syntaksen for array_flip()-funktionen er:

array array_flip(array array)

I det følgende eksempel bytter array_flip()-funktionen alle nøglerne og værdierne af elementerne:

$languages ​​​​= array("Spanien" => "Spansk", "France" => "Fransk", "Italien" => "Italiensk");

$languages ​​= array_flip($languages);

// $languages ​​​​= array("Spansk" => "Spanien", // "Fransk" => "Frankrig", // "Italiensk" => "Italien");

Husk: array_flip() funktion ændrer sig ikke rækkefølgen af ​​array-elementer. Funktionen array_reverse() bruges til dette formål.

Array størrelse

At have oplysninger om den aktuelle matrixstørrelse kan ofte gøre et script mere effektivt. Array-størrelse bruges sandsynligvis oftest, når der gentages over elementer:

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

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

print "$us_vinproducenter[$i]";

Da $us_wine_producers-arrayet er indekseret af heltal, kan vi bruge en for-løkke til at cykle gennem tællervariablen ($i) og udskrive hvert element i arrayet.

Funktionen sizeof() returnerer antallet af elementer i en matrix. Syntaksen for funktionen sizeof() er:

int sizeof(array array)

Du vil sandsynligvis se sizeof()-funktionen meget i dine webapplikationer. Nedenfor er et kort eksempel på dets brug (for øvrigt er det forrige eksempel også en standardbrug af sizeof()):

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

$pasta_størrelse = sizeof($pasta);

// $pasta_størrelse = 3

Funktionen sizeof() har også en anden udvidet form, count() (se nedenfor).

Funktionen count() udfører den samme operation som sizeof(); den returnerer antallet af værdier indeholdt i en matrix. Syntaksen for funktionen count() er:

int count (blandet variabel)

Den eneste forskel mellem sizeof() og count() er, at count() i nogle situationer returnerer yderligere information:

  • hvis variablen eksisterer og er et array, returnerer count() antallet af elementer i arrayet;
  • hvis variablen eksisterer, men ikke er en matrix, returnerer funktionen 1;
  • hvis variablen ikke eksisterer, returneres værdien 0.

array_count_values()

Funktionen array_count_values() er en variation af sizeof() og count(). I stedet for det samlede antal elementer tæller den antallet af forekomster af hver værdi i arrayet. Syntaksen for funktionen array_count_values() er:

array array_count_values(array array):

I det returnerede array vil nøglerne være værdierne for det originale array, og værdierne vil være deres frekvenser:

$stater = аrraу("ON", "OK", "SA", "RA", "ON", "ON", "RA", "AK");

$state_freq = array_count_values($stater);

$state_freq-arrayet er udfyldt med følgende associative nøgle/værdi-par:

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

Sortering af arrays

Sortering tager vigtigt sted i programmering og findes ofte i praksis i sådanne internetapplikationer som kommercielle websteder (sortering af produktkategorier i alfabetisk rækkefølge, sortering af priser) eller søgemaskiner (sortering af programmer efter antal downloads). Der er ni standard sorteringsfunktioner i PHP (tabel 5.1), og hver funktion sorterer et array på en bestemt måde.

Tabel 5.1. Sorteringsfunktioner

Sortering

Omvendt rækkefølge

Lagring af nøgle/værdipar

Betyder

Betyder

Betyder

Betyder

Betyder

Betyder

Henviser til brugen af ​​brugerdefinerede sorteringsfunktioner, hvor sorteringsrækkefølgen af ​​et array afhænger af resultaterne returneret af den brugerdefinerede funktion.

Sortering af array-elementer er ikke begrænset til standardkriterier, da tre funktioner (usort(), uasort() og uksort()) giver dig mulighed for at indstille brugerdefinerede kriterier og sortere information på nogen måde.

Den enkleste funktion sort() sorterer elementerne i en matrix i stigende rækkefølge (fra mindste til største). Syntaksen for sort()-funktionen er:

void sort(array array)

Ikke-numeriske elementer er sorteret alfabetisk efter ASCII-koder. Følgende eksempel viser brugen af ​​funktionen sort() til sortering:

// Opret en række byer.

// Sorter byer i stigende rækkefølge

// Gå gennem indholdet af arrayet og udlæs alle nøgle/værdi-par.

for (nulstil($byer); $nøgle = nøgle ($byer); næste ($byer)):

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

Dette uddrag producerer følgende output:

byer = Aprilia

byer = Nettuno

byer = Venezia

Som du kan se, er $cities-arrayet sorteret alfabetisk. En variation af denne sorteringsmetode er implementeret i asort()-funktionen beskrevet nedenfor.

Funktionen rsort() fungerer nøjagtigt på samme måde som sort()-funktionen, med én undtagelse: array-elementerne er sorteret i omvendt rækkefølge. Syntaks for rsort()-funktionen:

void rsort(array array)

Lad os vende tilbage til $cities-arrayet fra det forrige eksempel:

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

byer = Venezia

byer = Nettuno

byer = Aprilia

$cities-arrayet er også sorteret, men denne gang i omvendt alfabetisk rækkefølge. En variation af denne sorteringsmetode er implementeret i arsort()-funktionen beskrevet nedenfor.

Funktionen asort() fungerer meget på samme måde som sort()-funktionen nævnt ovenfor, men den bevarer den oprindelige tilknytning af indekser med elementer uanset den nye rækkefølge af elementerne. Syntaks for asort()-funktionen:

void asort(array array)

Lad os vende tilbage til $cities-arrayet:

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

Som et resultat af at sortere $cities-arrayet ved hjælp af rsort()-funktionen, vil elementerne blive arrangeret i følgende rækkefølge:

byer = Aprilia

byer = Nettuno

byer = Venezia

Vær opmærksom på indeksene og sammenlign dem med dem, der er givet i beskrivelsen af ​​sort()-funktionen. Dette er netop forskellen mellem de to funktioner.

Funktionen arsort() er en variation af asort(), der bevarer den oprindelige indekstilknytning, men sorterer elementerne i omvendt rækkefølge. Syntaks for arsort()-funktionen:

void array(array array)

Lad os bruge arsort()-funktionen til at sortere $cities-arrayet:

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

arsort($byer);

byer = Venezia

byer[l] = Nettuno

byer = Aprilia

Vær opmærksom på indeksene og sammenlign dem med dem, der er givet i beskrivelsen af ​​rsort()-funktionen. Dette er netop forskellen mellem de to funktioner.

Funktionen ksort() sorterer et array efter nøgle og bevarer de originale nøgleværdi-associationer. Syntaks for funktionen ksort():

void ksort(array array)

Overvej f.eks. et array, der er lidt anderledes end det originale array

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

"Italien" => "Toscana",

"Australien" => "Ruthgerlen",

"Frankrig" => "Loire",

"Chile" => "Rapel Valley");

Som et resultat af at sortere et array ved hjælp af ksort()-funktionen, vil elementerne blive arrangeret i følgende rækkefølge:

"Amerika" => "Napa Valley"

"Australien" => "Ruthgerlen"

"Chile" => "Rapel Valley"

"Frankrig" => "Loire"

"Italien" => "Toscana"

Sammenlign resultaterne af sortering af $wine_producers med sort()-funktionen:

"Amerika" => "Napa Valley"

"Australien" => "Toscana"

"Chile" => "Ruthgerlen"

"Frankrig" => "Loire"

"Italien" => "Rapel Valley"

Et mere end tvivlsomt resultat!

Krsort()-funktionen er næsten den samme som ksort(), men tasterne er sorteret i omvendt rækkefølge. Syntaks for krsort()-funktionen:

void krsort(array $array)

Lad os se på at sortere $wi-reproducerende array ved hjælp af krsort()-funktionen:

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

"Italien" => "Toscana",

"Australien" => "Ruthgerlen",

"Frankrig" => "Loire".

"Chile" => "Rapel Valley");

krsort($vinproducenter);

Som et resultat af sorteringen vil elementerne blive arrangeret i følgende rækkefølge:

"Italien" => "Toscana"

"Frankrig" => "Loire"

"Chile" => "Rapel Valley"

"Australien" => "Ruthgerlen"

"Amerika" => "Napa Valley"

De ovenfor beskrevne sorteringsfunktioner vil formentlig være tilstrækkelige i de fleste tilfælde. I nogle situationer kan det dog være nødvendigt at definere dine egne sorteringskriterier. I PHP er denne funktion implementeret i tre standardfunktioner: usort(), uasort() og uksort().

Usort()-funktionen giver dig mulighed for at sortere et array baseret på et kriterium defineret af programmøren. For at gøre dette videregives usort() navnet på den funktion, der bestemmer sorteringsrækkefølgen som en parameter. Syntaksen for funktionen usort() er:

void usort (array array, string function_name)

Array-parameteren indeholder navnet på det sorterede array, og funktionsnavn-parameteren indeholder navnet på den funktion, som sorteringen vil blive udført på grundlag af. Lad os sige, at du har en lang liste af græske navne, som du skal huske til din kommende historieeksamen. Du vil sortere ordene efter længde, så du starter med de længste og så lærer de korte, når du er træt. For at sortere et array efter længde kan du bruge usort()-funktionen.

Liste 5.2. Definition af sorteringskriterier for funktionen usort().

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

funktion sammenligne_længde($str1, $str2) (

// Få længden af ​​de næste to ord

$længde1 = strlen($str1);

$længde2 = strlen($str2);

// Bestem hvilken streng der har den korteste længde

if ($længde1 == $længde2):

elseif ($længde1< $length2) :

// Kald usort() og specificerer funktionen compare_length()

// som sorteringskriterium

usort($vocab, "sammenlign_længde") :

// Output sorteret liste

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

echo "$val
";

I liste 5.2 definerer compare_length()-funktionen, hvordan arrayet skal sorteres. I dette tilfælde gøres dette ved at sammenligne længden af ​​de transmitterede elementer. Kriteriefunktionen skal modtage to parametre, der repræsenterer

array-elementer at sammenligne. Bemærk også, hvordan disse elementer implicit overføres til kriteriefunktionen, når du kalder usort(), og hvordan alle elementer automatisk sammenlignes af denne funktion.

Funktionerne uasort() og uksort() er varianter af usort() med samme syntaks. Funktionen uasort() sorterer et array efter brugerdefinerede kriterier, mens nøgle/værdi-tilknytninger bevares. Funktionen uksort() sorterer også arrayet efter brugerdefinerede kriterier, men den sorterer nøglerne, ikke værdierne.

Andre nyttige funktioner

Dette afsnit beskriver nogle funktioner, der ikke hører til nogen specifik sektion, men som uden tvivl er nyttige.

Funktionen arrayjnerge() flettes fra 1 til N arrays og kombinerer dem i den rækkefølge, de er opført i parametrene. Syntaksen for array_merge()-funktionen er:

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

Lad os se på et eksempel simpel forening arrays med arrayjnerge()-funktionen;

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

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

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

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

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

Funktionen array_slice() returnerer et udsnit af et array, hvis start- og slutpositioner er specificeret af offset fra starten og en valgfri længdeparameter. Syntaksen for array_slice()-funktionen er:

array array_slice(array array, int offset [, int længde])

  • Hvis forskydningen er positiv, tælles startpositionen for det returnerede fragment fra begyndelsen af ​​arrayet.
  • Hvis forskydningen er negativ, tælles startpositionen for det returnerede fragment fra slutningen af ​​arrayet.
  • Hvis længden ikke er angivet, inkluderer det returnerede array alle elementer fra startpositionen til slutningen af ​​arrayet.
  • Hvis der er angivet en positiv længde, består det returnerede fragment af det angivne antal elementer.
  • Hvis en negativ længde er angivet, ender det returnerede fragment inden for det angivne antal elementer fra slutningen af ​​arrayet.

Funktionen array_spl ice() minder vagt om array_slice() -- den erstatter en del af arrayet, defineret af en startposition og en valgfri længde, med elementer af en valgfri array-parameter. Syntaksen for array_splice()-funktionen er:

array_splice(array input_array, int offset, , );

Parameterværdier indstilles i henhold til visse regler:

  • Hvis forskydningen er positiv, tælles startpositionen for det første element, der skal fjernes, fra begyndelsen af ​​arrayet.
  • Hvis forskydningen er negativ, tælles startpositionen for det første element, der skal fjernes, fra enden af ​​arrayet.
  • Hvis længden ikke er angivet, fjernes alle elementer fra startpositionen til slutningen af ​​arrayet.
  • Hvis der er angivet en positiv længde, består det fragment, der skal slettes, af det angivne antal elementer.
  • Hvis der er angivet en negativ længde, fjernes elementer fra arrayet fra startpositionen til den position, der er den angivne afstand fra enden af ​​arrayet.
  • Hvis replacement_array ikke er angivet, fjernes de elementer, der er specificeret af offset og valgfri længde fra arrayet.
  • Hvis en replacement_array er angivet, skal den være indesluttet i en array()-konstruktion (hvis den indeholder mere end ét element).

Lad os se på et par eksempler, der tydeligt demonstrerer denne funktions muligheder. Disse eksempler vil bruge $pasta-arrayet (se ovenfor), som forskellige operationer vil blive udført på.

Fjernelse af alle elementer fra den femte position til slutningen af ​​arrayet:

$pasta = array_splice($pasta, 5);

Fjernelse af det femte og sjette element:

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

Udskiftning af det femte og sjette element med nye værdier:

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

Fjernelse af alle elementer fra det femte til det tredje element fra slutningen af ​​arrayet:

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

Som du kan se fra disse eksempler, giver funktionen array_splice() fleksibiliteten til at fjerne elementer fra et array med et minimum af kode.

Funktionen shuffle() sorterer elementerne i et array i tilfældig rækkefølge. Syntaksen for shuffle()-funktionen er:

void shuffle(array array);

Resultater

Dette kapitel så på arrays og standard PHP-funktioner til at arbejde med arrays. Især blev følgende emner overvejet:

  • skabe indekserede og associative arrays;
  • multidimensionelle arrays;
  • visning af indholdet af multidimensionelle arrays;
  • element søgning;
  • tilføje og fjerne elementer;
  • matrix størrelse;
  • sortering;
  • Andet nyttige funktioner til at arbejde med arrays.

Arrays er meget praktiske og universelle værktøjer til at arbejde med data i webapplikationer. I eksemplerne i senere kapitler vil arrays blive brugt gentagne gange for at forbedre effektiviteten og klarheden af ​​koden.

I kapitel 6 vil vi fortsætte med at introducere det grundlæggende i PHP. Denne gang vi taler om sprogets objektorienterede evner.

På trods af at arrays er ret enkle at forstå, har mange mennesker vanskeligheder, når de støder på dem. Det er derfor, jeg besluttede at skrive lidt om arrays for at fjerne skyggen af ​​usikkerhed over dem. Jeg kan sige, at arrays er et af de elementer, som du simpelthen ikke kan undvære i programmering. De forenkler en masse ting og gør koden mere læsbar og indlysende, og kan også spare dig for tid på at skrive denne kode. Hvorfor? Hvordan? Nu skal jeg fortælle dig alt.

Hvad er et array?
Hvis du ikke gider og forklare i klart sprog, så er et array en variabel, der indeholder et vilkårligt antal andre variabler, og disse kan til gengæld også være arrays. Således kan arrayet simpelthen være gigantisk og indeholde en masse information. Og tak PHP funktioner til at arbejde med arrays bliver de meget praktiske at arbejde med. Sorter, rens, find de rigtige nøgler, sorter i og meget mere.

Nogle eksempler
Lad os se på et eksempel:

$b = "test b" ; ?>

Her har vi lavet to variable

1
2
3

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

Og her lavede vi et array $test_array og skabte 2 nøgler med nogle værdier.
I første omgang kan det virke som om alt med et array ser noget besværligt ud, men lad os forestille os en situation, hvor vi skal vise 1000 variabler på skærmen. Hvis disse alle er separate variabler, så kan vi bare skrive et helt ark papir, mens vi skriver noget lignende

1
2
3
4
5

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

Men hvis alle disse variable var matrixnøgler, så ville vi simpelthen skrive:

1
2
3

echo $værdi ;
} ?>

Foreach-konstruktionen itererer gennem hver array-nøgle efter tur, og $value indeholder værdien af ​​den aktuelle array-nøgle. Er det virkelig praktisk? Og dette er bare det mest primitive eksempel.

Sortering af data
En af de mest de bedste måder at anvende et array er at bruge det til at sortere data eller til at kombinere nogle data, for ikke at blive forvirret senere. Lad os se på eksemplet med biler. Lad os sige, at vi har 2 biler, og hver af dem har to interiørmuligheder. Og hver har 3 mulige farver.

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

"Maskin1" => array(
"salon1" => array(
"color1" => "sort" ,
"color2" => "rød" ,
"color3" => "grøn"
),
"salon 2"
),
"Maskin2" => array(
//og så videre
); ?>

På denne måde får vi et array, der indeholder 2 nøgler, maskine1 og maskine2. Hver af dem har to saloner, og hver salon har 3 farver. Og alt dette er meget nemt at komme til. For eksempel:

// vil udsende "sort"?>

Søg
Som med alle data er søgning vigtig i arrays, og PHP giver en række funktioner til at søge gennem arrays. For eksempel kontrollerer funktionen array_key_exists(), om en bestemt nøgle er i arrayet, og funktionen in_array() kontrollerer, om en bestemt værdi er i arrayet. For dem, der endnu ikke har forstået, er alle data i arrays gemt i formen nøgle=værdi

Lad os sige, at du har en idé om et PHP-array. Det er svært at arbejde med arrays uden indbyggede funktioner. Du kan beskrive en funktion for en bestemt opgave. Du kan bruge flere timer på at skrive dine funktioner. Det er en dårlig måde. Jeg foreslår, at du læser manualen på php.net. Jeg skrev flere funktioner, og efter et stykke tid opdagede jeg analoger på php.net. For eksempel søgning efter et element i et array kan nemt udføres ved hjælp af array_search()-funktionen

//array_search() $array = array("name" => "Egor", "site" => "training.web", "description" => "php-træning"); $key = array_search("træning.web", $array); echo $key; // websted

Fungere in_array() returnerer TRUE, hvis elementet findes i arrayet. Arrayet kan blandes tilfældigt ved hjælp af shuffle()-funktionen. Hvis du har brug for at vise tilbud på en hjemmeside, så brug denne funktion. Array reverse bruges ofte. Funktionen array_reverse() hjælper dig med at vende elementerne i en matrix.

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

Den mest brugte funktion er count(). Det tæller antallet af elementer i et array. Funktionen sizeof() er forældet. Nogle gange er du nødt til at tælle antallet af identiske elementer i et array. Funktionen array_count_values() vil hjælpe. Du kan fylde et array med mange elementer og derefter bruge denne funktion. Hvis du beskriver en funktion, vil du spilde en masse tid. Fejlfindingsfunktionen print_r() bruges meget ofte. Det udsender hele arrayet, uanset hvor stort og komplekst det er. For at få det sidste element i arrayet, brug følgende kode: $numbers[ count($numbers) - 1 ]. Du kan også bruge end()-funktionen.

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

Implode()-funktionen bruges meget ofte. Hun sammenkæder array-elementer til en streng. Hvis du bruger din egen afgrænser, så kan du opdele arrayet og samle elementerne i en streng. Du kan sætte en højre skråstreg "/" mellem array-elementer. Du kan tilføje en linje som denne til slutningen af ​​URL'en. Hvis du har en streng, der ligner en url, så for at opdele en streng, brug explode()-funktionen. Læs om eksplosionsfunktionen i artiklen Sådan opdeles en streng i et array explode() PHP. Med afgrænsning konverteres strengelementer i en række til matrixelementer. Med et ord bliver strengdatatypen til en matrix.

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

Jeg kan virkelig godt lide array_map()-funktionen. Den anvender tilbagekaldsfunktionen på alle elementer i arrayet. Du skriver en funktion og bruger den derefter i array_map()-funktionen. Du kan tilføje en til hvert element i et array. Du kan iterere gennem arrayet på denne måde eller rydde arrayet af unødvendige elementer.

//array_map() $numbers = range(1, 10); function plusOne($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 sker, at du skal kaste en streng til et array. Dette gøres blot ved hjælp af (array)-funktionen. Jeg laver 2 strengvariabler. Derefter vil jeg omdanne variablerne til arrays og kombinere arrays til et array. For at kombinere arrays til et fælles array er array_merge()-funktionen velegnet. Du kan kombinere en masse arrays til et array: array_merge($arr1, $arr2, $arr3, ...,).

Sidste opdatering: 1/11/2015

Arrays er designet til at gemme sæt af data eller elementer. Hvert element i arrayet har sin egen unikke nøgle og værdi. Så lad os gemme listen over telefonmodeller i et array:

"; ?>

Her oprettes et array $phones med fire elementer. Hvert element i arrayet repræsenterer et nøgleværdi-par. Så det første element $phones = "Nokia N9" har en nøgle - tallet 0, og en værdi - strengen "Nokia N9". I sådanne arrays kaldes de numeriske taster også for indekser.

Du kan bruge funktionen count() til at finde ud af antallet af elementer i en matrix. Og på grund af det faktum, at tasterne er i rækkefølge fra 0 til 3, og ved at kende størrelsen af ​​arrayet, kan du vise array-elementerne i en for-løkke.

For at gøre forholdet mellem elementernes nøgler og værdier mere klart, lad os udskrive arrayet ved hjælp af print_r-funktionen:

Print_r($telefoner);

Vi får følgende output:

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

Denne array-oprettelse ville også svare til følgende:

"; ?>

Hvis en elementnøgle ikke er angivet, bruger PHP tal som nøgler. I dette tilfælde starter nummereringen af ​​nøgler fra nul, og hver ny nøgle øges med én.

Når vi kender nøglen til et element i et array, kan vi få adgang til dette element, få eller ændre dets værdi:

// få elementet ved tast 1 $myPhone = $phones; ekko "$myPhone
"; // tildeling af en ny værdi $phones = "Samsung X650"; ekko "$phones
";

Men ikke kun heltal, men også strenge kan bruges som nøgler:

Sådanne arrays kaldes også associativ.

array-operator

En måde at skabe et array på blev diskuteret ovenfor. Men der er en anden, som involverer brugen af ​​array()-operatoren.

Array()-operatoren tager et sæt elementer. Nøglerne er heller ikke eksplicit angivet her. Derfor nummererer PHP automatisk elementer fra nul. Men vi kan også angive en nøgle for hvert element:

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

=>-operationen giver dig mulighed for at tilknytte en nøgle til en bestemt værdi.

Iteration over associative arrays

Ovenfor har vi set på, hvordan man bruger en for-løkke til at vise alle elementerne i et array, hvor nøglerne er specificeret sekventielt med tal fra 0 til 3. Dette virker dog ikke med associative arrays. Og for dem har PHP en speciel 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 fjernes alle elementer sekventielt fra arrayet, og deres værdi placeres i den variabel, der er angivet efter as nøgleordet. I dette tilfælde placeres alle fire værdier fra $phones-arrayet i $item-variablen efter tur. Når det sidste element fra arrayet er hentet, slutter løkken.

Foreach-løkken giver dig mulighed for at hente ikke kun værdier, men også elementnøgler:

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

Her, når der itereres gennem elementerne i løkken, vil elementets nøgle blive overført til $key-variablen, og dens værdi vil blive overført til $value-variablen.

Et alternativ til foreach loop er at bruge listen og hver funktion:

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

While-løkken vil køre indtil hver funktion returnerer false. Hver funktion itererer gennem alle elementerne i $phones-arrayet og returnerer det som et array, der inkluderer elementets nøgle og værdi. Denne matrix sendes derefter til listefunktionen, og matrixværdierne tildeles variablerne inden for parentesen. Når hver funktion er færdig med at iterere gennem $phones-arrayet, vil den returnere falsk, og while-løkken slutter.

Multidimensionelle arrays

I de foregående eksempler blev kun endimensionelle arrays taget i betragtning, hvor elementværdierne repræsenterede tal eller strenge. Men i PHP kan arrays også være multidimensionelle, det vil sige dem, hvor et element i arrayet selv er et array. Lad os for eksempel oprette en multidimensional matrix:

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 "

$mærke

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

Og når vi udskriver, får vi 4 lister:

For at få adgang til et givet element skal du også angive nøglerne i firkantede parenteser. Lad os for eksempel se på det første element i det første array. Da nøglen til det første array er "æble", og nøglen til det første element i det første array er tallet 0 (da vi ikke eksplicit specificerede nøglerne):

Echo $phones["æble"];

Du kan få det andet element i det tredje array på lignende måde:

Echo $phones["nokia"];

Lad os sige, at indlejrede arrays også repræsenterer associative arrays:

array("apple" => "iPhone5", "samsumg" => "Samsung Galaxy III", "nokia" => "Nokia N9"), "tablets" => 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øgle: $værdi
  • "; ) ekko "
"; ) // tildel en anden værdi til et af elementerne $technics["phones"]["nokia"] = "Nokia Lumnia 930"; // vis denne værdi echo $technics["phones"]["nokia" ]; ? >