Effektiv programmering i PHP: arrays til strenge. Effektiv PHP-programmering: Arrays til strenginformation: tegn, strenge og data

JavaScript er blokeret i din browser. Aktiver venligst JavaScript for at siden kan fungere!

implodere

(PHP 3, PHP 4, PHP 5)

implodere- Sammenkæder matrixelementer til en streng (konverterer matrix til streng)

Beskrivelse

snor implodere(strenglim, array stykker)

Returnerer strengen opnået ved at sammenkæde strengrepræsentationerne af elementerne i brikker-arrayet ved at indsætte en limstreng mellem tilstødende elementer.

Eksempel 1: Brugseksempel implode()

Kommentar: Af historiske årsager, funktioner implode() du kan sende argumenter i vilkårlig rækkefølge, men for forening med funktionen eksplodere() den dokumenterede argumentrækkefølge skal bruges.

Kommentar: Siden version 4.3.0 er limfunktionens argument implode() er valgfri og er som standard den tomme streng (""). For bagudkompatibilitet anbefales det altid at bestå begge argumenter.

Kommentar: Denne funktion er sikker at behandle data i binær form.

Denne funktion kombinerer værdierne af array-elementer til en streng. For at kombinere nøglerne til array-elementer skal du bruge følgende kode:

php implode for indlejrede arrays

Hvis du sender et flerdimensionelt array til at implodere, vil du modtage en "Array til streng konvertering"-fejl. For at undgå denne fejl skal du bruge følgende svarende til imploderingsfunktionen:

Funktion multi_implode($lim, $array) ( $_array=array(); foreach($array som $val) $_array = is_array($val)? multi_implode($lim, $val) : $val; return implode($ lim, $_array);

Se også funktionsbeskrivelser

Konvertering af data fra en repræsentation til en anden er en populær, ofte den eneste, mekanisme til at løse et problem. Et array er et simpelt tilfælde af et objekt. En streng er en naturlig repræsentation af information til transmission, behandling eller lagring.

Erfaring og semantik implementeret i PHP: arrays, funktioner og syntaktiske strukturer gør det muligt at skabe optimale løsninger til behandling af information, som den præsenteres.

Information: tegn, strenge og data

I sin "rene" form er information en streng af tegn, tale eller en sekvens af signaler. Strenge, arrays og objekter optræder i programmering - det er varianter af kunstige strengkonstruktioner. Tal er også strenge, men tal, ikke symboler.

PHP giver dig mulighed for at konvertere en streng til et array på mange forskellige måder. Der er to specielle funktioner, der gør dette "på egen hånd":

  • $aArr = eksplodere("x", "streng");
  • $aStr = implode("y", $aArr).

Den første funktion finder afgrænsningstegnet "x" og deler strengen "streng" ved hjælp af det. Det resulterende array indeholder nøjagtigt det antal elementer (linjer), der er indeholdt mellem "x"-tegnene. Separatorsymbolet er måske ikke nødvendigvis det klassiske:

  • komma;
  • prik;
  • semikolon.

Du kan opdele en streng efter understreng eller med en speciel kombination af tegn.

Strenglængde er strlen() i PHP, arraylængde er count(). I det første tilfælde tælles antallet af tegn, i det andet tilfælde antallet af elementer. Da afgrænsningstegnet ikke er inkluderet i array-elementerne, vil værdien af ​​count() være lig med antallet af skilletegn i den konverterede streng minus én.

I PHP omvendt transformation konverteres arrays til streng med et afgrænsningstegn (kan være tomt), og alle data (tal og boolske udtryk) flettes til én streng. Et element i et array kan være et andet array, men programmøren skal håndtere denne sag specifikt. Implode()-funktionen er langt fra rekursiv.

I dette eksempel er der ikke noget problem med at konvertere PHP-arrays til en streng, så længe der ikke er noget andet array blandt deres elementer. Når associative elementer konverteres, går nøgleinformationen tabt. Især elementerne "blomme" og "fersken" vil blive frataget deres nøgler.

Dataafgrænsere og nøgler

Betragt ikke punktum, kommaer, kolon osv. som afgrænsninger. Dette er et særligt tilfælde af adskillelse af data fra hinanden. Når du transformerer en streng i PHP, vil et multidimensionelt array ikke fungere, og associative indekser har ingen steder at komme fra.

Parsing af en streng med skilletegn producerer altid strenge. Men det er ikke en grund til at stoppe der. Efter at have parset en linje i dens komponentelementer, kan du gå videre.

For eksempel var der et afsnit med flere sætninger (separator "." - punktum), flere sætninger i sætningen (separatorer "," - komma, ";" - semikolon og "." - punktum), sætningen indeholder ord ( skilletegn " " - mellemrum, "," - komma, ";" - semikolon og "."

Med denne adskillelse i PHP kan et multidimensionelt array nemt opnås, men algoritmen vil være meget grim: Antallet af separatorer stiger, og manglen på forbindelse mellem tilstødende afsnit vil med garanti sikre duplikering af sætninger, sætninger og ord.

Ved at parse strenge kan du straks konvertere sekvenser af cifre til tal og logiske værdier til sand og falsk. Men dette er især, nøgleinformationen vil stadig ikke vises, fordi nøglen er meningen, kun et numerisk indeks kan oprettes automatisk.

Komplekse separatorer

Udskrivning af et PHP-array til en streng bruges ofte til hjælpeformål. En konfigurationsfil skrives traditionelt linje for linje, med et lighedssymbol eller et kolon, der adskiller navnet fra værdien.

Med denne løsning udføres output af et array i PHP i en fil, strengdeling opnås automatisk, og med omvendt genkendelse opnås let associative arrays.

Ved at læse filen får programmøren linjerne, og ved at bryde hver linje med "=" eller ":", får han navnet og dets værdi. En meget populær manipulation, selvom det er mere moderne at bruge XML-notation på det simple grundlag, at der udover navne og værdier kan lagres og genskabes yderligere data, for eksempel variable attributter.

I eksemplet med afsnit (f.eks. naturlig tekst til at bygge en ordbog eller resultatet af parsing for at skabe et dataeksempel), er det vigtige ikke den specifikke procedure for at konvertere en streng til en matrix, men en omfattende løsning for alle afsnit. eller blokke af information.

Typisk vil en sådan opgave kræve en omvendt løsning, når det genererede "sæt" af data skal bruges til at søge efter information i det eller til at samle det tilbage til en streng.

Adskillelse og genmontering af strenge - datavalidering

I PHP: arrays to string er den nøjagtige løsning. Hvis kildeinformationen kunne have syntaksfejl, ekstra mellemrum eller forkerte symboler, så vil de ikke være der under parsing. Resultatet af at transformere den indledende information i overensstemmelse med de uskrevne love for programmering udføres strengt formelt, og resultatet vil blive klart lagt på hylderne.

Den omvendte procedure vil producere den korrekte kildestreng. Hvis du sammenligner mængden af ​​kildeoplysninger og resultatet af den omvendte transformation, kan du drage konklusioner om, hvor der er begået fejl eller tab af data. I PHP kan længden af ​​et array i sammenhæng med den oprindelige længde af strengen tillade os at drage de nødvendige konklusioner.

Tid, dato og begivenhedsmærker

I udviklingen af ​​kritiske projekter, når man opretter kontrolobjekter, for eksempel tid eller begivenheder, er en række én repræsentation af data, og en matrix er en anden. Men i anvendelse er de ækvivalente.

Når det er nødvendigt at udføre matematiske eller logiske beregninger, manipulerer programmøren arrayet, når det er nødvendigt at gemme data, bruger han strengversionen.

Adgang til indekser til databasefelter - en reel praksis for den fælles handling af MySQL og PHP, arrays i en række = et indeks på rækkerne af flere databasetabeller. Hvis databasen indeholder et dusin tabeller, og rækkerne i hver tabel kan vælges ved hjælp af en kombination af navne (værdier) i en bestemt kombination, så har du oprettet rækkeadgangsarrays, du efterfølgende kan få adgang til dem ved hjælp af en indeksdannelsesalgoritme, og ikke ved at søge i databasen.

Konvertering af et array til en streng kan betragtes som en algoritme til at danne det ønskede indeks, mens indholdet af arrayet dannes under kontrol af helt andre hændelser eller brugerhandlinger.

Sammenlægning af arrays

PHP-funktioner giver dig mulighed for frit at manipulere arrays. Men der opstår altid problemer med at vælge unikke data eller finde data i et array.

Det første problem løses iterativt: et array (eller flere arrays) itereres, og en række unikke værdier dannes - en indlysende løsning, men ikke den mest effektive.

At finde data i et array er også en cyklus, og hvis der er mange elementer, så vil cyklussen være ret lang og tage en mærkbar tid. Det er muligt at sende et array til en streng og bruge strpos()-funktionen til at finde en forekomst af det ønskede element, men dette vil introducere problemet med at opdage en fejlagtig forekomst.

For eksempel blev der søgt efter ordet "bakke", og dets forekomst blev fundet i ordet "hammer". Du kan slippe af med sådanne fejl, hvis du fusionerer alle elementer i arrayet til en streng ved hjælp af en speciel separator, hvilket vil undgå tvetydighed.

Hvis linjen indeholder "[bakke]" og "[hammer]", så vil der ikke være nogen problemer med søgningen.

Men der er ingen garanti for, at strpos()-funktionen på reelle mængder data vil arbejde hurtigere end en loop, der gentager array-elementer.

Den bedste løsning er, at arrayet eller strengen gør det rigtige alene. Hvis vi komplicerer arrays lidt og forenkler strenge, fordi førstnævnte er et specialtilfælde af et objekt, og sidstnævnte er traditionel serialisering, så vil alle gøre deres egne ting.

På det rigtige tidspunkt er objektet et array, og når der er brug for en streng, vil det være en streng. I dette tilfælde er det absolut ikke nødvendigt at have både en matrix og en streng i objektet på samme tid. Du kan bygge en unik datastruktur med hurtig adgang. Og sæt "array" og "streng" logikken i objektmetoder.

Den objektorienterede tilgang forenkler løsningen af ​​mange problemer med at behandle strenginformation, den giver dig mulighed for at undgå at fokusere på arrays, loops og strengbehandlingsfunktionen i PHP selv.

Både strenge og arrays er den virkelige betydning af virkeligheden, applikationen, opgaven. Der er ingen sådan opgave - at sende arrays til strenge i PHP. Men der er en opgave at få et afsnit (sætning, sætning, ord, tal...) baseret på resultaterne opnået i den tidligere algoritme.

Den tidligere algoritme har en betydning, og det nøjagtige udtryk for denne betydning er indeholdt i arrayet. Det næste trin i algoritmen er transformationen af ​​betydning til en anden repræsentation, praktisk til yderligere behandling eller anvendelse.

Ved at se algoritmen som dynamikken i betydning og transformation af data, er det muligt at danne pålidelige, forståelige og effektive transformationer.

PHP, som et moderne programmeringssprog, giver mulighed for at behandle data, hvis type kan bestemmes på tidspunktet for brug. Datatypen kan ændre sig under programafviklingen.

Tegnstrenge er den eneste datatype, som data af andre typer naturligt castes til, af den simple grund, at enhver given data altid er en sekvens af tegn.

Arrays i PHP

Ud over almindelige variabler giver PHP programmøren syntaks og funktioner til at arbejde med arrays. Ud over almindelige arrays, der giver adgang til deres elementer med nøgle (et tal fra 0 til antallet af elementer), kan du bruge associative arrays. I sidstnævnte kan adgang udføres både ved hjælp af et numerisk indeks (tildelt automatisk) og med en nøgle specificeret af programmøren.

PHP giver mulighed for at bytte indekser og værdier, hvilket giver mening, da en nøgle ikke er officielt strengere end en værdi, men du bør bruge den forsigtigt. I lang tid har programmeringstraditioner appelleret til bogstaverne i det latinske alfabet. Kyrillisk bringer som en generel regel problemet med kodninger med sig. Du bør ikke misbruge sprogets muligheder, når du har brug for praktisk og sikker kode.

Den optimale indeksmulighed er en meningsfuld sætning på engelsk, helst uden mellemrum. Det er fantastisk, at PHP-syntaks erklærer "frihed" for nøgler, men det er bedre at stole på din egen erfaring og fokusere på sikker kode.

Det mest interessante og praktiske træk ved PHP "arrays to string"-løsningen er muligheden for tilsvarende gensidig konvertering.

PHP: Arrays og strenge

PHP "arrays to string"-funktionen: $cLine = implode("/ ", $aStyle) producerer en tegnstreng af alle elementer i $aStyle-arrayet, adskilt af tegnet "/". Hvis du angiver " ", vil alle elementer blive flettet sammen til en kontinuerlig sekvens af tegn.

Den omvendte funktion $aStyle = explode("/", $cLine) skaber en matrix af alle linjer, der er adskilt af tegnet "/".

Når du bruger explode()-funktionen, er det tilrådeligt, men ikke nødvendigt, at kontrollere tilstedeværelsen af ​​det ønskede skilletegn i kildestrengen.

Du kan også udlæse arrays til en streng i PHP ved at bruge mere humane og kontrollerede midler, for eksempel i for, while, foreach loop, tilføje værdierne af array-elementer til en strengvariabel ved hjælp af tildelingsoperatoren: ".=". eller "."-operatoren, som gør det muligt at danne de resulterende konverterstrenge (behandle hvert element).

PHP: Udskriv array til streng via objekter

Et objekt er en samling af data og kode. Intet forhindrer dig i at sætte f.eks. to funktioner i din kode: skriv og læs. Takket være arv og polymorfi, hvis du har et cirkelobjekt, kan du have dets variationer: blå, rød og grøn.

Hver vil blive skrevet (læst) forskelligt, men præcis hvordan PHP "arrays to string"-løsningen udføres, er ligegyldigt. I deres kerne har objekter en vis betydning, har forskellige strukturer og forskellige metoder. Et eksempel med to funktioner - særlig. Når man konstruerer en sådan mekanisme i PHP, vil arrays blive placeret forskelligt i en streng i hvert enkelt tilfælde.

Dette åbner op for en masse muligheder. Et objekt har to arrays, et andet har tyve, og den fælles forfader (normalt den allerførste er abstrakt) har overhovedet intet. Ved at bruge deres fælles forfader-metoder, behøver du ikke at bekymre dig om, at noget ikke bliver skrevet, læst, behandlet eller vist.

Takket være arv, uanset hvilken form der bruges overalt i programmet, kan den repræsenteres som en streng og sendes tilbage til objektet af den pågældende form.

Hej, i går undersøgte vi, hvordan du kan splitte en streng og få en matrix fra den. I dag gør jeg dig opmærksom på den modsatte funktion, ved hjælp af hvilken vi kan konverter array til streng. Denne hedder imploderende funktion. Funktionsprincippet for denne funktion ligner den foregående, men vi vil se på det ved hjælp af et eksempel:

$array = array( "Jeg hedder Denis") ;
$string = imploder( " ", $array);
ekko $streng;
?>

Vi lavede et array med tre elementer og vha imploderende funktioner gjorde det til en snor. Denne funktion kan tage to parametre. Den første er valgfri og betyder, hvilken afgrænser der skal anvendes mellem array-elementerne. Hvis denne parameter ikke er angivet, vil array-elementer blive adskilt med mellemrum som standard. Og den anden parameter angiver selve arrayet, som vil blive konverteret til en streng. Det er alle de parametre, som den funktion, der undersøges, understøtter. Som et resultat af at udføre funktionen, vil du modtage strengen (Mit navn er Denis). Hvis vi havde angivet et komma som separator, ville resultatet have været (Mit navn er Denis). Jeg tror, ​​der var ingen problemer med at lære denne funktion, og du vil selv kunne bruge den, når oprettelse af dine hjemmesider. Dette afslutter denne artikel, som du kan se, var den ret lille i volumen, men meget vigtig fra et praktisk synspunkt. Vi ses snart, held og lykke med at lære programmeringssprog!

Hvis du skal konvertere et PHP-array til en streng, er der flere værktøjer til dette. Brugen af ​​et bestemt værktøj afhænger af dine mål.

1. Implode() funktion

Med dens hjælp kan du "lime" array-elementer ind i en streng gennem enhver separator. Læs mere: imploder
Eksempel:

Echo implode("|", array(1, 2, 3)); // vil producere linjen: 1|2|3

Denne funktion har en antagonist, explode(), som tværtimod opdeler strengen ved afgrænseren i array-elementer. Læs mere: eksplodere

2. Serialize() funktion

Funktionens hovedopgave er at transformere en variabel (i vores tilfælde et array) til en tilstand, der er egnet til lagring.
Det bruges til at gemme et array i en streng og derefter konvertere det tilbage til et array. Du kan gemme arrayet i en fil eller database og derefter gendanne det, næste gang du kører scriptet.
Læs mere: serialiser

$array = array("1" =>; "element 1", "2"=> "element 2", "3" => "element 3"); $string = serialize($array); echo $streng; // vil producere linjen: a:3:(i:1;s:6:"elem 1";i:2;s:6:"elem 2";i:3;s:7:"elem 3" ;)

Så fra denne linje kan du få arrayet igen:

$array = unserialize($string);

3. json_encode() funktion

Returnerer en JSON-repræsentation af dataene. Du kan læse hvad det er.
I vores tilfælde ligner denne funktion serialisering, men JSON bruges hovedsageligt til dataoverførsel. Du bliver nødt til at bruge dette format til at udveksle data med javascript på frontend. Flere detaljer: json_encode

$array = array(1 => "én", 2 => "to",); $json = json_encode($array); echo $json; // ("1":"en","2":"to")

Callback-funktionen json_decode() vil returnere et objekt af typen stdClass, hvis den anden parameter i funktionen er falsk. Eller det vil returnere et associativt array, hvis true sendes som den anden parameter. Detaljer her.