/ / PHP: array i array. Søker i en rekke PHP

PHP: array i array. Søker i en rekke PHP

Programmering er syntaks og semantikk. Den første er bestemt av språkets regler, den andre av utviklerens erfaring. Med hensyn til arrays kan utvikleren objektivt laste syntaksen med semantikk. Dette er ikke et objekt, men ikke en matrise i tradisjonell forstand. PHP gjør det mulig å lage arrayer av variabler av forskjellige typer, inkludert seg selv. Et element i en matrise kan være en funksjon, det vil si evnen til å laste en matrise med en ekte algoritme, med ekte betydning.

Syntaxen er stabil, men varierer fra versjon tilversjon og kan ikke alltid være kompatibel, selv fra bunnen av. Portabilitetsprogrammer - godt glemt prestasjon av forrige århundre. Semantikk utvikler og kan alltid brukes ikke bare i noen versjon av noe språk; Det har blitt en tradisjon å bruke syntaktiske konstruksjoner for å uttrykke det faktum at språkreglene ikke engang var forutsatt. På eksempelet på arrays, kan dette forstås mest enkelt.

Bygningsarrayer

Arrayet i PHP har praktisk syntaks og funksjonalitet. Denne typen data kan beskrives på forhånd, men det er ofte praktisk å lage arrayer på fly som det er nødvendig.

offentlig $ aNone = array (); // arrayet er beskrevet og inneholder ingenting

offentlig $ aFact = array ( "avokado", "fersken", "cherry"); // i denne gruppen er det tre elementer

Opprette en matrise mens du sjekker en tilstand:

$ cSrcLine = "streng av analyserte data";

for ($ i = 0; $ i <13; $ i ++) {

$ cUserLine = inputUserLine (); // Skriv inn noe

hvis (checkFunc ($ cSrcLine, $ cUserLine) {

$ aResult [] = "Ja"; // legge til PHP array

} annet {

$ aResult [] = "Nei";

}

}

Som et resultat av utførelsen av dette eksempelet,En rekke av 13 elementer hvis verdier vil være bare linjene "Ja" eller "Nei". Elementer vil få indekser fra 0 til 12. Den samme effekten kan oppnås ved å skrive et "fremtidig" PHP-array til en streng:

$ cFutureArray = "";

for ($ i = 0; $ i <13; $ i ++) {

$ cUserLine = inputUserLine (); // Skriv inn noe

hvis ($ i> 0) {$ cFutureArray. = "|"; }

hvis (checkFunc ($ cSrcLine, $ cUserLine) {$ cFutureArray. = "Yes";

} ellers {$ cFutureArray. = "Nei"; }

}

$ aResult = eksplodere ("|", $ cFutureArray);

php array til streng

Flerdimensjonale arrays

Mange nettstedssystemer (SMS)bruk arrays "på stor skala". På den ene siden, dette er god praksis, på den annen side, det gjør søknaden vanskelig. Selv om forfatteren forstår doktrinen om PHP-array i en matrise, bør den ikke bli misbrukt: ikke bare vil utvikleren bli vant til komplisert notasjon. Ofte etter en stund vil skaperen selv i lang tid huske hva han skrev i begynnelsen:

returnere array (

"View_manager" => array (41, "template_path_stack" => array (__DIR__. "/../view"),

"router" => array ("ruter" => array ("sayhello" => array (

"type" => "ZendMvcRouterHttpLiteral",

"options" => array ("route" => "/ sayhello", "standard" => array (

"controller" => "HelloworldControllerIndex", "action" => "index",))))))),

"controllers" => array ("invokables" => array (

"HelloworldControllerIndex" => "HelloworldControllerIndexController"))

);

Dette er en prøveøvelse av "PHP array in array" fra ZF2. Ikke for inspirerende først, men det fungerer og muligens gjør denne rammen vellykket (eksempel fra modulen ZendSkeletonApplication / module / Helloworld / config / module.config.php).

slett elementet i php array

Et array er en viktig datastruktur i løpet avdesign og utvikling. Den multivariate versjonen var en gang populær, men over tid var det behov for arrayer med maksimalt to eller tre dimensjoner. Så det er lettere og mer forståelig, men fra faglig synspunkt, når noe begynner å formere seg, er det ikke noe i problemstillingen eller i koden.

Enkel, tilgjengelig og forståelig

Å lage på php er en matrise i en matrise bestbegrenset til to eller tre nivåer. Til tross for stabiliteten og påliteligheten til PHP, tillater det feil i behandlingen av syntaktiske konstruksjoner. Dette kan tolereres ved å ha en god kodeditor, blir vant til akkurat å telle parenteser og kommaer. PHP kontrollerer imidlertid ikke datatyper (dette er karmaen i moderne programmering) og tillater utvikleren å praktisere semantiske feil.

Regelen er å kontrollere type variabler elleregne ideer om transformasjon av semantikk til syntaks er ofte en uopptakelig luksus. Dette er et tap av skripthastighet, lesbarhet av koden, ... derfor har enkelhet i koding alltid en betydelig verdi.

PHP har en betydelig negativ funksjon: Når usikkerheten oppstår, henger skriptet ganske enkelt. Ikke alle debuggere takler uforutsette omstendigheter, og mye avhenger av utviklerens opplevelse og intuisjon. Jo enklere algoritmen er, jo mer strukturert informasjonen er, jo mer sannsynlig er det å finne en feil eller ikke å innrømme det i det hele tatt.

Det er karakteristisk at når de første arrays dukket opp,Varianter av data i form av strukturer ble foreslått - et plagsomt forsøk på å skape noe fra forskjellige typer data. Den første overlevde og kjøpte en ny effektiv syntaks, sistnevnte gikk ned i historien.

Enkle og assosiative arrays

Opptak av et todimensjonalt array er et annet parparenteser "[" og "], for eksempel: $ aSrcData [1] [2] refererer til elementet [2] i array [1] som går inn i $ aSrcData-array. I PHP er det ikke krav om å erklære dataene på forhånd. Enhver deklarert informasjon kan alltid kontrolleres for eksistens.

Det er veldig effektivt å lage noe bare da,når det er nødvendig, i det skjemaet der det var nødvendig, og ødelegge når behovet forsvant i den. Ved å bruke meningsfulle navn som nøkler (indekser) kan du få lesbare konstruksjoner som er meningsfulle i sammenheng med det nåværende stedet i algoritmen:

$ aAnketa ["name"] = "Ivanov";
$ aAnketa ["alder"] = 42;
$ aAnketa ["work"] = "Director";
$ aAnketa ["active"] = true;
$ aTable [] = $ aAnketa;

$ aAnketa ["name"] = "Petrov";
$ aAnketa ["age"] = 34;
$ aAnketa ["work"] = "Manager";
$ aAnketa ["active"] = true;
$ aTable [] = $ aAnketa;

$ aAnketa ["name"] = "Afanasyev";
$ aAnketa ["age"] = 28;
$ aAnketa ["work"] = "Arbeid";
$ aAnketa ["active"] = false;
$ aTable [] = $ aAnketa;

$ sOne. = implode (";", $ aTable [1]). "<br/>"; // det andre PHP-arrayet i en streng
$ sOne. = $ aTable [1] ["work"]; // refererer til ett element i den andre gruppen

Resultatet av dette eksempel (den første rekken - de vanlige nøkler deri begynner med 0, den andre gruppe - assosiativ, er det fire taster: "navn", "alder", "arbeid", "aktiv"):

$ sOne = "Petrov; 34; Manager; 1 <br/> Manager";

På dette enkle eksempelet kan du se hvordanDet opprettede spørreskjemaet kan brukes på alle ansatte. Du kan opprette en rekke medarbeidere med indekser ved hjelp av nummerplattene, og hvis du trenger en bestemt ansatt, velger du den av medarbeidsnummeret.

Hvis det er enheter i organisasjonen, eller det er detsesongarbeidere, eller det kreves separat å identifisere arbeidspensjonister, ... utformingen av "PHP array array" er veldig praktisk, men man bør aldri bli båret bort med dimensjonalitet. To eller tre dimensjoner er grensen for en effektiv løsning.

søk i php array

Nøkler for arbeid med arrays

Hvis det pleide å matter hvordan alt fungerer, daI de siste årene har tradisjonene i binærtiden, da programmøren ønsket å vite nøyaktig hvordan elementene i arrayet er lagret, og ønsket å ha direkte tilgang til dem, helt glemt. Det er mange tegnkodinger som tar opp mer enn en byte i minnet. Ordet "bit" kan nå bare bli funnet i bit søk operasjoner, men søket i PHP-arrayet er et eget emne. Tilgang til elementer kan være enkel og assosiativ. I det første tilfellet er elementene i arrayet (som har noen av de tilgjengelige i PHP) nummerert 0, 1, 2, ... I andre tilfelle spesifiserer programmerer sin egen indeks, ofte kalt "tasten" for å få tilgang til ønsket verdi.

$ aLine ["frukt"] = "oransje"; // her PHP-nøkkelen til array = "frukt"

eller (slik at alt er riktig med kodingen av siden og koden):

$ aLine [iconv ("utf-8", "CP1251", "frukt")] = iconv ("utf-8", "CP1251", "oransje");

Når du legger til en ny verdi i $ aLine-arrayet:

$ aLine [] = iconv ("utf-8", "CP1251", "fersken");
$ aLine [iconv ("utf-8", "CP1251", "grønnsak")] = iconv ("utf-8", "CP1251", "agurk");
$ aLine [] = iconv ("utf-8", "CP1251", "aubergine");

som følge av syklusen:

foreach ($ aLine som $ ck => $ cv) {
$ cOne. = $ ck. "=". $ cv. "<br/>";
}

vil bli mottatt:

frukt = oransje
0 = fersken
grønnsak = agurk
1 = aubergine

PHP-array-nøkkelen når du legger til elementene "fersken" og "aubergine" dannes sekvensielt fra 0, og hvis du spesifiserer vil verdien være lik denne verdien.

Fjerner elementer fra en matrise

php fjerne array

Den enkleste måten er å fjerne et PHP-array element underbehandler den. I dette tilfellet, for eksempel, som et resultat av gjennomføring av sløyfen, blir det opprinnelige matrommet sett og en ny er dannet, i hvilke unødvendige elementer ikke er enkelt skrevet.

Du kan gjøre det enklere. Hvis du søker på det siste eksemplet:

unset ($ aLine [0]); // fjern PHP array element

da blir resultatet:

frukt = oransje
grønnsak = agurk
1 = aubergine

Alternativer for å manipulere arrayelementerDu kan designe mye. For eksempel, ved å bruke funksjonene: implode () og explode (), kan du skrive et PHP-array i en streng med en avgrenser, og demontere den tilbake til en annen matrise med en annen avgrenser.

For å bare fjerne hele arrayet i PHP, skriv bare: unset ($ aLine);

Dette er nok.

Array søk

PHP inneholder spesielle søkefunksjoner.array_keys (), array_values ​​(), array_key_exists () og in_array (), men før du bestemmer deg for å bruke dem, bør du vurdere muligheten til å utføre et søk i et PHP-array på egen hånd.

php array nøkkel

Ethvert prosjekt er et bestemt fagområde,konstruerte arrays, spesielt når en del av semantikken overføres til syntaksen og er representert av et sett med ganske spesifikke meningsfulle nøkler. Dette lar deg utføre dine egne søkefunksjoner, som også kan betegnes som meningsfylt.

I PHP kan du ringe til funksjoner hvis navn er bestemt under programgjennomføring. Et veldig praktisk eksempel fra PHPWord-biblioteket, som lar deg lese og lage MS Word-dokumenter:

$ elements = array ("Text", "Inline", "TextRun", "Link", "PreserveText", "TextBreak",
"ListItem", "ListItemRun", "Table", "Image", "Object", "Footnote",
"Endnote", "CheckBox", "TextBox", "Field", "Line");

$ functions = array ();

for ($ i = 0; $ i <count ($ elements); $ i ++) {
$ funksjoner [$ i] = "add". $ elementer [$ i];
}

Som et resultat vil $ $ -funksjonsarmen motta verdiene for $ element-arrayet, det vil si navnene på ekte funksjoner som utfører arbeid med ekte elementer i dokumentet.

Kaller $ funksjoner [4] for $ elementer [4], du kan få et perfekt søk og et raskt resultat.

Sortere elementer

Oppgaven med å sortere data er viktig, ogPHP tilbyr flere funksjoner for dette: sorter (), rsort (), asort (), ksort (), ... Stigende og synkende elementer, de to andre funksjonene bevarer forholdet mellom nøkler og verdier. Noen ganger er det fornuftig å blande verdiene til et array tilfeldig - shuffle ().

php verdi i array

Bruk av PHP-funksjoner for sortering skal ikkeglem at elementene kan ha ikke bare forskjellige typer, men heller ikke helt naturlig innhold. Først av alt må du være veldig forsiktig med å sortere linjer som inneholder russiske bokstaver, sorterings datoer, samt tall som er skrevet i forskjellige formater.

php array i array

Den beste måten å skrive din egen perfekte løsning på, i hvert fall i testfasen av skriptet, er manuell sortering. Det vil bidra til å forutse uforutsette situasjoner.

Små bokstaver

Takket være implode () og eksplodere () -funksjonenekan enkelt forvandles til en streng og komme seg tilbake. Dette gjør at du kan lagre data i en kompakt visning og distribuere den til en praktisk tilstand etter behov.

Arrangementet forvandlet til en streng åpner nye muligheter. For eksempel krever oppgaven med å finne søkeord i teksten at den funnet ikke er lagt til igjen.

$ cSrcLine = "Text Text ListItemRun TextBox ListItem TextBox Check Box CheckBox TextBox Fotnote";

$ aSrc = eksplodere ("", $ cSrcLine);
$ cDstLine = "";

for ($ i = 0; $ i <count ($ aSrc); $ i ++) {
$ cFind = "[". $ aSrc [$ i]. "]";
hvis (! is_integer (strpos ($ cDstLine, $ cFind))) {
$ cDstLine. = $ cFind;
}
}
$ aDst = eksplodere ("] [", $ cDstLine);

$ cOne = implode (";", $ aDst);

Som et resultat vil $ cOne-variabelen bare motta de verdiene fra kildestrengen som er funnet der en gang: "Tekst; ListItemRun; TextBox; ListItem; Check; Box; CheckBox; Fotnote".

Russisk språk i nøkler og verdier

Det anbefales ikke å bruke noe som er tilkoblet.med nasjonale kodinger, i syntaktiske konstruksjoner. Det russiske språket, som alle andre språk, hvis tegn er utover grensene til a-z, vil ikke skape problemer, i dataområdet, men ikke i kodeksens syntaks. Noen ganger kan en enkel PHP-oppgave å "skrive ut en matrise til en skriver eller til en skjerm" føre til "sprekker", og oftere vil det bare stoppe skriptet.

PHP er et lojalt språk og tolerant fornasjonale kodinger, men det er mange situasjoner hvor arbeidet må gjøres igjen bare fordi nøkkelverdien vil vises på riktig sted til rett tid, som ikke kan gjenkjennes.

PHP-syntaks og språkmiljø

Husk at PHP syntaks er en ting, menkonstruerer denne syntaksen "avtale" med andre applikasjoner, med operativsystemet, med maskinvarealternativer. Det er mange alternativer, det er aldri mulig å forutse alt.

Regelen "i koden er det bare kode, og ved inngangen,det er noen informasjon inni og ved utkjørselen "vil bidra til å unngå uventede overraskelser. PHP-verdien i arrayet kan være "russisk", men nøkkelen til den må være syntaktisk korrekt, ikke bare fra det aktuelle språket, men også fra miljøets synspunkt.

Les mer: