/ / PHP: array i array. PHP Array-søgning

PHP: array i array. PHP Array-søgning

Programmering er syntaks og semantik.Den første bestemmes af sprogets regler, den anden - af udviklerens oplevelse. Med hensyn til arrays kan udvikleren udsætte syntaksen for semantik. Det er endnu ikke et objekt, men det er ikke længere et array i traditionel forstand. PHP gør det muligt at oprette arrays fra variabler af forskellige typer, inklusive dem selv. Et element i et array kan være en funktion, det vil sige evnen til at indlæse en array med en reel algoritme, reel betydning.

Syntaksen er stabil, men ændres fra version tilversioner og er muligvis ikke altid kompatible opad. Programmets bærbarhed er et glemt resultat i det sidste århundrede. Semantik udvikler sig og kan altid anvendes ikke kun i enhver version af ethvert sprog; det er blevet en tradition at bruge syntaktiske konstruktioner til at udtrykke, hvad sprogets regler ikke engang var fastsat. Ved hjælp af arrays som et eksempel kan dette forstås mest simpelt.

Konstruktion af arrays

PHP-arrays har praktisk syntaks og funktionalitet. Denne datatype kan beskrives på forhånd, men det er ofte praktisk at oprette arrays i farten efter behov.

offentlige $ aNone = array (); // arrayet er beskrevet og indeholder intet

offentlig $ aFact = array ("avocado", "fersken", "kirsebær"); // denne matrix har tre elementer

Oprettelse af en matrix i processen med at kontrollere en eller anden tilstand:

$ cSrcLine = "analyseret datalinje";

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

$ cUserLine = inputUserLine (); // indtast noget

hvis (checkFunc ($ cSrcLine, $ cUserLine) {

$ aResult [] = "Ja"; // tilføj til PHP-array

} andet {

$ aResult [] = "Nej";

}

}

Som et resultat af udførelsen af ​​dette eksempelen matrix med 13 elementer, hvis værdier kun vil være strengene "Ja" eller "Nej". Elementerne modtager indekser fra 0 til 12. Den samme effekt kan opnås ved først at skrive det "fremtidige" PHP-array til en streng:

$ cFutureArray = "";

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

$ cUserLine = inputUserLine (); // indtast noget

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

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

} andet {$ cFutureArray. = "Nej"; }

}

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

php-array til streng

Flerdimensionelle arrays

Mange webstedsadministrationssystemer (SMS)brug arrays "på en stor måde". På den ene side er dette god praksis, på den anden side gør det det vanskeligt at anvende. Selvom forfatteren forstår PHP-array-in-array-doktrinen, skal den ikke misbruges: ikke kun udvikleren bliver nødt til at vænne sig til den komplekse notation. Ofte efter et stykke tid vil skaberen selv huske i lang tid, hvad han skrev i starten:

retur array (

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

"router" => array ("routes" => array ("sayhello" => array (

"type" => "ZendMvcRouterHttpLiteral",

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

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

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

"HelloworldControllerIndex" => "HelloworldControllerIndexController"))

);

Dette er PHP Array i Array Sample Practice af ZF2. Ikke meget inspirerende i starten, men det fungerer og gør sandsynligvis denne ramme til en succes (eksempel fra ZendSkeletonApplication / module / Helloworld / config / module.config.php module).

fjern element i php-array

Array er en vigtig datakonstruktion underdesign og udvikling. Dens flerdimensionale version var engang populær, men over tid er der fortsat behov for arrays på maksimalt to eller tre dimensioner. Dette er enklere og mere forståeligt, men set fra professionalisme, når noget begynder at formere sig, betyder det, at der er noget galt i problemangivelsen eller i koden.

Enkel, tilgængelig og forståelig

Ved at oprette i php er en matrix i en matrix bedstvære begrænset til to eller tre niveauer. På trods af stabilitet og pålidelighed laver PHP fejl ved behandling af syntaks. Du kan klare det med en god kodeditor, der er vant til nøjagtigt at tælle parenteser og kommaer. PHP kontrollerer dog ikke datatyper (dette er karmaen ved moderne programmering) og giver udvikleren mulighed for at øve semantiske fejl.

En regel til styring af typer af variabler, elleregne ideer om at omdanne semantik til syntaks er ofte en uacceptabel luksus. Dette er et tab af scripthastighed, kodelæsbarhed, ... derfor er let kodning altid afgørende.

PHP har en betydelig ulempe:når der er usikkerhed, hænger scriptet simpelthen. Ikke alle debuggere beskæftiger sig med beredskaber, og meget afhænger af udviklerens oplevelse og intuition. Jo enklere algoritmen er, jo mere tilgængelig den strukturerede information er, desto større er chancerne for at finde en fejl eller slet ikke indrømme den.

Det er karakteristisk, at når de første arrays dukkede op,varianter af data i form af strukturer er blevet foreslået - et klodset forsøg på at skabe noget fra forskellige typer data. Førstnævnte overlevede og erhvervede en ny effektiv syntaks, mens sidstnævnte er historie.

Enkle og associerende arrays

At skrive et todimensionelt array er et andet parparentes "[" og "]", for eksempel: $ aSrcData [1] [2] betyder henvisning til element [2] i array [1] inkluderet i array $ aSrcData. Der er ikke noget krav i PHP om at erklære data på forhånd. Enhver erklæret information kan altid kontrolleres for eksistens.

Det er meget effektivt kun at skabe noget, hvisnår det er nødvendigt, i den form, det var påkrævet, og at ødelægge, når behovet for det er forsvundet. Ved hjælp af fornuftige navne som nøgler (indekser) kan du få læsbare konstruktioner, der er meningsfulde i sammenhæng med det aktuelle sted i algoritmen:

$ aAnketa ["name"] = "Ivanov";
$ aAnketa ["age"] = 42;
$ aAnketa ["work"] = "Direktør";
$ aAnketa ["aktiv"] = sand;
$ aTable [] = $ aAnketa;

$ aAnketa ["name"] = "Petrov";
$ aAnketa ["age"] = 34;
$ aAnketa ["work"] = "Manager";
$ aAnketa ["aktiv"] = sand;
$ aTable [] = $ aAnketa;

$ aAnketa ["name"] = "Afanasiev";
$ aAnketa ["age"] = 28;
$ aAnketa ["work"] = "Arbejdstager";
$ aAnketa ["aktiv"] = falsk;
$ aTable [] = $ aAnketa;

$ sOne. = implode (";", $ aTable [1]). "<br/>"; // andet PHP-array til streng
$ sOne. = $ aTabel [1] ["arbejde"]; // adgang til et element i det andet array

Resultatet af dette eksempel (den første matrix er normal, nøglerne i den starter fra 0, den anden matrix er associerende, den har fire nøgler: "navn", "alder", "arbejde", "aktiv"):

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

I dette enkle eksempel kan du se hvordanden oprettede profil kan anvendes på alle medarbejdere. Du kan oprette en række medarbejdere med indekser efter personaletal, og hvis du har brug for en bestemt medarbejder, skal du vælge ham efter personnummer.

Hvis organisationen har afdelinger, eller der ersæsonarbejdere eller har brug for at udskille arbejdende pensionister ... PHP-arrayet i array-konstruktion er meget praktisk, men du bør aldrig blive båret af dimensionalitet. To eller tre dimensioner er grænsen for en effektiv løsning.

php array søgning

Taster til at arbejde med arrays

Hvis det før var vigtigt, hvordan alt fungerede, såI de senere år blev traditionerne i den binære æra, da en programmør ønskede at vide nøjagtigt, hvordan elementerne i en matrix blev lagret og ønskede at have direkte adgang til dem, helt glemt. Der er mange tegnkodninger, der optager mere end en byte i hukommelsen. Ordet "bit" kan nu kun findes i bit-søgning, men søgning i et PHP-array er et separat emne. Elementadgang kan være enkel og associerende. I det første tilfælde er elementerne i arrayet (med en hvilken som helst af de tilgængelige typer i PHP) nummereret 0, 1, 2, ... I det andet tilfælde specificerer programmøren sit eget indeks, ofte kaldet "nøglen" til få adgang til den ønskede værdi.

$ aLine ["fruit"] = "orange"; // her PHP array-nøgle = "frugt"

eller (så alt er korrekt, iagttagelse af side- og kodekodning):

$ aLine [iconv ("utf-8", "CP1251", "fruit")] = iconv ("utf-8", "CP1251", "orange");

Når du tilføjer en ny værdi til $ aLine-arrayet:

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

som et resultat af løkkeudførelse:

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

vil modtage:

frugt = appelsin
0 = fersken
grøntsag = agurk
1 = aubergine

Når elementerne "fersken" og "aubergine" tilføjes, dannes arrayets PHP-nøgle sekventielt fra 0, og når den specificeres, vil den være lig med denne værdi.

Fjernelse af elementer fra en matrix

php slet array

Den nemmeste måde er at fjerne et element i et PHP -array underbehandler det. I dette tilfælde, for eksempel, som et resultat af loop loop, scannes det originale array og dannes et nyt, hvor unødvendige elementer simpelthen ikke skrives.

Du kan gøre det lettere. Hvis vi anvender det sidste eksempel:

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

så bliver resultatet:

frugt = appelsin
grøntsag = agurk
1 = aubergine

Muligheder for manipulation af matrixelementermange kan konstrueres. For eksempel ved at bruge funktionerne: implode () og explode (), kan du skrive et PHP -array til en streng med en separator og analysere det tilbage i et andet array ved hjælp af en anden separator.

For ganske enkelt at slette et helt array i PHP skal du bare skrive: unset ($ aLine);

Det er nok.

Søg i en matrix

PHP indeholder særlige søgefunktionerarray_keys (), array_values ​​(), array_key_exists () og in_array (), men inden du beslutter dig for at bruge dem, bør du overveje at lave en PHP -array -søgning selv.

php array -nøgle

Ethvert projekt har et specifikt fagområde,konstruerede arrays, især når en del af semantikken er blevet overført til syntaks og repræsenteret af et sæt meget specifikke meningsfulde nøgler. Dette giver dig mulighed for at udføre dine egne søgefunktioner, som også kan mærkes meningsfuldt.

I PHP kan du kalde funktioner, hvis navne bestemmes under programkørsel. Et meget praktisk eksempel fra PHPWord -biblioteket, der giver dig mulighed for at læse og oprette MS Word -dokumenter:

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

$ funktioner = array ();

for ($ i = 0; $ i <count ($ elementer); $ i ++) {
$ functions [$ i] = "tilføj". $ elementer [$ i];
}

Som et resultat heraf modtager $ -funktions -arrayet værdierne for $ -elementer -arrayet, det vil sige navnene på reelle funktioner, der udfører arbejde med virkelige elementer i dokumentet.

Ved at kalde $ functions [4] for $ elements [4], kan du få perfekt søgning og hurtige resultater.

Sortering af varer

Opgaven med at sortere data er afgørende, ogPHP tilbyder flere funktioner til dette: sort (), rsort (), asort (), ksort (), ... Stigende og faldende elementer, de to andre funktioner bevarer forholdet mellem nøgler og værdier. Nogle gange er det fornuftigt at blande arrayværdierne tilfældigt - shuffle ().

php værdien i arrayet

Når du bruger PHP -funktioner til at sortere, skal du ikke gøre detglem, at elementer ikke kun kan have forskellige typer, men heller ikke helt naturligt indhold. Først og fremmest skal du være meget forsigtig med at sortere strenge, der indeholder russiske bogstaver, sorteringsdatoer samt tal, der er skrevet i forskellige formater.

php -array i array

Den bedste måde at skrive den perfekte løsning selv, i hvert fald i testfasen af ​​scriptet, er ved manuel sortering. Hun hjælper med at foregribe uforudsete situationer.

Inline arrays

Takket være funktionerne implode () og explode () er arrayetkan let omdannes til en streng og modtages tilbage. Dette giver dig mulighed for at gemme data i en kompakt form og udvide dem til en bekvem tilstand efter behov.

Et array, der bliver til en streng, åbner nye muligheder. For eksempel kræver opgaven med at finde søgeord i teksten, at den fundne ikke tilføjes igen.

$ cSrcLine = "Text Text ListItemRun TextBox ListItem TextBox Checkbox CheckBox TextBox Footnote";

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

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

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

Som følge heraf vil variablen $ cOne kun modtage de værdier fra den oprindelige streng, der forekommer der én gang: "Text; ListItemRun; TextBox; ListItem; Check; Box; CheckBox; Footnote".

Russisk sprog i nøgler og værdier

Det anbefales ikke at bruge noget relateretmed nationale indkodninger, i syntaktiske konstruktioner. Det russiske sprog, som alle andre sprog, hvis tegn rækker ud over a-z, vil ikke skabe problemer i dataområdet, men ikke i kodens syntaks. Nogle gange vil endda en simpel PHP -opgave "at udskrive et array til en printer eller til en skærm" føre til "krakozyabram", og oftere vil det bare stoppe scriptet.

PHP er et loyalt sprog og er tolerant over fornationale kodninger, men der er mange situationer, hvor den afsluttede mængde arbejde kun skal udføres, fordi der på det rigtige sted og på det rigtige tidspunkt dukker en nøgleværdi op, som ikke vil være muligt at genkende.

PHP syntaks og sprogmiljø

Det skal huskes, at PHP -syntaks er en ting, menkonstruktionerne af denne syntaks "omhandler" andre programmer, operativsystemet og hardwareindstillinger. Der er mange muligheder, det er aldrig muligt at forudse alt.

Reglen er "i koden er der kun koden, men ved input,inde, og ved udgangen er der alle oplysninger ”hjælper med at undgå uventede overraskelser. PHP-værdien i arrayet kan være "russisk", men nøglen til den skal være syntaktisk korrekt, ikke kun fra det givne sprogs synspunkt, men også fra sit miljøs synspunkt.

ønsket:
0
Populære indlæg
Åndelig udvikling
mad
y