Effektiv programmering i PHP: arrays til strenger. Effektiv PHP-programmering: Arrays til strenginformasjon: tegn, strenger og data

JavaScript er blokkert i nettleseren din. Aktiver JavaScript for at nettstedet skal fungere!

implodere

(PHP 3, PHP 4, PHP 5)

implodere- Sammenslår matriseelementer til en streng (konverterer matrise til streng)

Beskrivelse

streng implodere(strenglim, array-stykker)

Returnerer strengen oppnådd ved å sette sammen strengrepresentasjonene av elementene i brikkematrisen, og sette inn en limstreng mellom tilstøtende elementer.

Eksempel 1: Brukseksempel implode()

Kommentar: Av historiske årsaker, funksjoner implode() du kan sende argumenter i hvilken som helst rekkefølge, men for forening med funksjonen eksplodere() den dokumenterte argumentrekkefølgen skal brukes.

Kommentar: Siden versjon 4.3.0 har argumentet limfunksjonen implode() er valgfritt og har som standard den tomme strengen (""). For bakoverkompatibilitet anbefales det å alltid passere begge argumentene.

Kommentar: Denne funksjonen er trygg å behandle data i binær form.

Denne funksjonen kombinerer verdiene til matriseelementer til en streng. For å kombinere nøklene til matriseelementer, bruk følgende kode:

php implode for nestede arrays

Hvis du sender en flerdimensjonal matrise for å implodere, vil du motta en "Array til strengkonvertering"-feil. For å unngå denne feilen, bruk følgende tilsvarende imploderingsfunksjonen:

Funksjon 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å funksjonsbeskrivelser

Konvertering av data fra en representasjon til en annen er en populær, ofte den eneste, mekanismen for å løse et problem. En matrise er et enkelt tilfelle av et objekt. En streng er en naturlig representasjon av informasjon for overføring, behandling eller lagring.

Erfaring og semantikk implementert i PHP: arrays, funksjoner og syntaktiske strukturer gjør det mulig å lage optimale løsninger for å behandle informasjon slik den presenteres.

Informasjon: tegn, strenger og data

I sin "rene" form er informasjon en streng av tegn, tale eller en sekvens av signaler. Strenger, arrays og objekter vises i programmering - dette er varianter av kunstige strengkonstruksjoner. Tall er også strenger, men tall, ikke symboler.

PHP lar deg konvertere en streng til en matrise på mange forskjellige måter. Det er to spesialfunksjoner som gjør dette "på egen hånd":

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

Den første funksjonen finner skilletegn "x" og deler strengen "streng" ved å bruke den. Den resulterende matrisen inneholder nøyaktig antallet elementer (linjer) som finnes mellom "x"-tegnene. Skillesymbolet er kanskje ikke nødvendigvis det klassiske:

  • komma;
  • punktum;
  • semikolon.

Du kan dele en streng etter understreng eller med en spesiell kombinasjon av tegn.

Strenglengde er strlen() i PHP, arraylengde er count(). I det første tilfellet telles antall tegn, i det andre tilfellet antall elementer. Siden skilletegn ikke er inkludert i matriseelementene, vil verdien av count() være lik antall skilletegn i den konverterte strengen minus én.

I PHP omvendt transformasjon konverteres arrays til streng med et skilletegn (kan være tomt), og alle data (tall og boolske uttrykk) slås sammen til én streng. Et element i en matrise kan være en annen matrise, men programmereren må håndtere denne saken spesifikt. Implode()-funksjonen er langt fra rekursiv.

I dette eksemplet er det ikke noe problem å konvertere PHP-matriser til en streng så lenge det ikke er noen annen matrise blant elementene deres. Når assosiative elementer konverteres, går nøkkelinformasjon tapt. Spesielt elementene "plomme" og "fersken" vil bli fratatt nøklene.

Dataavgrensere og nøkler

Ikke betrakt punktum, komma, kolon osv. som skilletegn Dette er et spesielt tilfelle av å skille data fra hverandre. Når du transformerer en streng i PHP, vil ikke en flerdimensjonal matrise fungere, og assosiative indekser har ingen steder å komme fra.

Å analysere en streng med skilletegn produserer alltid strenger. Men dette er ingen grunn til å stoppe der. Etter å ha analysert en linje i komponentelementene, kan du gå videre.

For eksempel var det et avsnitt med flere setninger (skilletegn "." - punktum), flere fraser i setningen (skilletegn "," - komma, ";" - semikolon og "." - punktum), uttrykket inneholder ord ( skilletegn " " - mellomrom, "," - komma, ";" - semikolon og "." - punktum).

Med denne demonteringen i PHP kan en flerdimensjonal array enkelt oppnås, men algoritmen vil være veldig stygg: Antall skilletegn øker, og mangelen på sammenheng mellom tilstøtende avsnitt vil garantert sikre duplisering av setninger, setninger og ord.

Ved å analysere strenger kan du umiddelbart konvertere sekvenser av sifre til tall, og logiske verdier til sant og usant. Men dette er spesielt, nøkkelinformasjonen vil fortsatt ikke vises, fordi nøkkelen er meningen, bare en numerisk indeks kan opprettes automatisk.

Komplekse separatorer

Å skrive ut en PHP-array til en streng brukes ofte til verktøyformål. En konfigurasjonsfil er tradisjonelt skrevet linje for linje, med et likhetssymbol eller et kolon som skiller navnet fra verdien.

Med denne løsningen gjøres utdata fra en array i PHP i en fil, strengdeling oppnås automatisk, og med omvendt gjenkjenning oppnås enkelt assosiative arrays.

Ved å lese filen får programmereren linjene, og ved å bryte hver linje med "=" eller ":", får han navnet og verdien. En veldig populær manipulasjon, selv om det er mer moderne å bruke XML-notasjon av den enkle grunn at i tillegg til navn og verdier, kan tilleggsdata lagres og gjenopprettes, for eksempel variable attributter.

I eksemplet med avsnitt (for eksempel naturlig tekst for å bygge en ordbok eller resultatet av parsing for å lage et dataeksempel), er det viktige ikke den spesifikke prosedyren for å konvertere en streng til en matrise, men en omfattende løsning for alle avsnitt. eller blokker med informasjon.

Vanligvis vil en slik oppgave kreve en omvendt løsning, når det genererte "settet" med data må brukes til å søke etter informasjon i det eller sette det tilbake til en streng.

Demontere og sette sammen strenger - datavalidering

I PHP: arrays to string er den eksakte løsningen. Hvis kildeinformasjonen kan ha syntaksfeil, ekstra mellomrom eller feil symboler, vil de ikke være der under parsing. Resultatet av å transformere den første informasjonen i henhold til de uskrevne programmeringslovene utføres strengt formelt, og resultatet vil bli tydelig lagt ut i hyllene.

Den omvendte prosedyren vil produsere den riktige kildestrengen. Hvis du sammenligner mengden kildeinformasjon og resultatet av den omvendte transformasjonen, kan du trekke konklusjoner om hvor det ble gjort feil eller tap av data. I PHP kan lengden på en matrise i sammenheng med den opprinnelige lengden på strengen tillate oss å trekke de nødvendige konklusjonene.

Tid, dato og hendelsestagger

I utviklingen av kritiske prosjekter, når du oppretter kontrollobjekter, for eksempel tid eller hendelser, er en rad én representasjon av data, og en matrise er en annen. Men i anvendelse er de likeverdige.

Når det er nødvendig å utføre matematiske eller logiske beregninger, manipulerer programmereren matrisen; når det er nødvendig å lagre data, bruker han strengversjonen.

Tilgang til indekser til databasefelt - en reell praksis for felles handling av MySQL og PHP, arrays på rad = en indeks på radene i flere databasetabeller. Hvis databasen inneholder et dusin tabeller, og radene i hver tabell kan velges med en kombinasjon av navn (verdier) i en bestemt kombinasjon, og etter å ha opprettet radtilgangsmatriser, kan du deretter få tilgang til dem ved hjelp av en indeksformasjonsalgoritme, og ikke ved å søke i databasen.

Konvertering av en matrise til en streng kan betraktes som en algoritme for å danne ønsket indeks, mens innholdet i matrisen dannes under kontroll av helt andre hendelser eller brukerhandlinger.

Slå sammen matriser

PHP-funksjoner lar deg fritt manipulere matriser. Men det oppstår alltid problemer med å velge unike data eller finne data i en matrise.

Det første problemet løses iterativt: en matrise (eller flere matriser) itereres og en streng med unike verdier dannes - en åpenbar løsning, men ikke den mest effektive.

Å finne data i en matrise er også en syklus, og hvis det er mange elementer, vil syklusen være ganske lang og ta merkbar tid. Det er mulig å sende en matrise til en streng og bruke strpos()-funksjonen for å finne en forekomst av det ønskede elementet, men dette vil introdusere problemet med å oppdage en feilaktig forekomst.

For eksempel ble ordet "brett" søkt etter, og det ble funnet i ordet "hammer". Du kan bli kvitt slike feil hvis du slår sammen alle elementene i matrisen til en streng ved hjelp av en spesiell separator, som vil unngå tvetydighet.

Hvis linjen inneholder "[brett]" og "[hammer]", vil det ikke være noen problemer med søket.

Men det er ingen garanti for at strpos()-funksjonen vil fungere raskere på reelle datamengder enn en loop som itererer over matriseelementer.

Den beste løsningen er at matrisen eller strengen gjør det rette på egen hånd. Hvis vi kompliserer arrays noe og forenkler strenger, fordi førstnevnte er et spesialtilfelle av et objekt, og sistnevnte er tradisjonell serialisering, så vil alle gjøre sine egne ting.

Til rett tid er objektet en matrise, og når det trengs en streng, vil det være en streng. I dette tilfellet er det absolutt ikke nødvendig å ha både en matrise og en streng i objektet samtidig. Du kan bygge en unik datastruktur med rask tilgang. Og legg "array" og "string" logikken inn i objektmetoder.

Den objektorienterte tilnærmingen forenkler løsningen av mange problemer med å behandle strenginformasjon; den lar deg ikke fokusere på arrays, løkker og strengbehandlingsfunksjonen til selve PHP.

Både strenger og matriser er den virkelige betydningen av virkelighet, applikasjon, oppgave. Det er ingen slik oppgave - å sende arrays til strenger i PHP. Men det er en oppgave å få et avsnitt (setning, setning, ord, tall...) basert på resultatene oppnådd i forrige algoritme.

Den forrige algoritmen har en mening, og det nøyaktige uttrykket for denne betydningen er inneholdt i matrisen. Det neste trinnet i algoritmen er transformasjonen av mening til en annen representasjon, praktisk for videre behandling eller anvendelse.

Ved å se på algoritmen som dynamikken i mening og transformasjon av data, er det mulig å danne pålitelige, forståelige og effektive transformasjoner.

PHP, som et moderne programmeringsspråk, gir muligheten til å behandle data, hvis type kan bestemmes på tidspunktet for bruk. Datatypen kan endres under programkjøring.

Tegnstrenger er den eneste datatypen som data av andre typer er naturlig castet til, av den enkle grunn at alle gitte data alltid er en sekvens av tegn.

Arrays i PHP

I tillegg til vanlige variabler, gir PHP programmereren syntaks og funksjoner for å arbeide med arrays. I tillegg til vanlige arrays som gir tilgang til elementene med nøkkel (et tall fra 0 til antall elementer), kan du bruke assosiative arrays. I sistnevnte kan tilgang utføres både med en numerisk indeks (tilordnet automatisk) og med en nøkkel spesifisert av programmereren.

PHP gir muligheten til å bytte indekser og verdier, noe som er fornuftig siden en nøkkel offisielt ikke er strengere enn en verdi, men du bør bruke den forsiktig. I lang tid har programmeringstradisjoner appellert til bokstavene i det latinske alfabetet. Kyrillisk, som en generell regel, bringer med seg problemet med kodinger. Du bør ikke misbruke språkets evner når du trenger praktisk og sikker kode.

Det optimale indeksalternativet er en meningsfull setning på engelsk, helst uten mellomrom. Det er flott at PHP-syntaks erklærer "frihet" for nøkler, men det er bedre å stole på din egen erfaring og fokusere på sikker kode.

Den mest interessante og praktiske funksjonen til PHP "arrays to string"-løsningen er muligheten for tilsvarende gjensidig konvertering.

PHP: Matriser og strenger

PHP "arrays to string"-funksjonen: $cLine = implode("/ ", $aStyle) produserer en tegnstreng av alle elementene i $aStyle-matrisen, atskilt med tegnet "/". Hvis du spesifiserer " ", vil alle elementene bli slått sammen til en sammenhengende sekvens av tegn.

Den inverse funksjonen $aStyle = explode("/", $cLine) lager en rekke av alle linjer som er atskilt med tegnet "/".

Når du bruker funksjonen explode() er det tilrådelig, men ikke nødvendig, å sjekke for tilstedeværelsen av ønsket skilletegn i kildestrengen.

Du kan også sende ut matriser til en streng i PHP ved å bruke mer humane og kontrollerte midler. For eksempel i for, while, foreach-løkken, legge til verdiene til matriseelementer til en strengvariabel ved å bruke tilordningsoperatoren: ".=" eller "."-operatoren, som tillater i prosessen med å danne de resulterende konverteringsstrengene (behandle hvert element).

PHP: Skriv ut array til streng via objekter

Et objekt er en samling av data og kode. Ingenting hindrer deg i å legge inn for eksempel to funksjoner i koden din: skriv og les. Takket være arv og polymorfisme, hvis du har et sirkelobjekt, kan du ha dets variasjoner: blå, rød og grønn.

Hver vil bli skrevet (lest) forskjellig, men nøyaktig hvordan PHP "arrays to string"-løsningen utføres, spiller ingen rolle. I kjernen har objekter en viss betydning, har forskjellige strukturer og forskjellige metoder. Et eksempel med to funksjoner - spesielt. Når du konstruerer en slik mekanisme i PHP, vil arrays plasseres i en streng forskjellig i hvert enkelt tilfelle.

Dette åpner for mange muligheter. Ett objekt har to matriser, et annet har tjue, og den felles stamfaren (vanligvis den aller første er abstrakt) har ingenting i det hele tatt. Ved å bruke deres felles forfedre-metoder, trenger du ikke å bekymre deg for at noe ikke blir skrevet, lest, behandlet eller vist.

Takket være arv, uansett hvilken form som brukes hvor som helst i programmet, kan den representeres som en streng og sendes tilbake til objektet til den aktuelle formen.

Hei, i går studerte vi hvordan du kan dele en streng og få en matrise fra den. I dag gjør jeg oppmerksom på den motsatte funksjonen, ved hjelp av hvilken vi kan konverter array til streng. Denne heter implode funksjon. Prinsippet for drift av denne funksjonen ligner den forrige, men vi vil se på det ved å bruke et eksempel:

$array = array( "Jeg heter Denis") ;
$string = implode( " ", $array);
ekko $string;
?>

Vi laget en matrise med tre elementer, og bruker implode funksjoner gjorde det til en streng. Denne funksjonen kan ta to parametere. Den første er valgfri og betyr hvilken skilletegn som skal brukes mellom array-elementene. Hvis denne parameteren ikke er spesifisert, vil matriseelementer som standard bli atskilt med mellomrom. Og den andre parameteren spesifiserer selve matrisen, som vil bli konvertert til en streng. Dette er alle parameterne som funksjonen som studeres støtter. Som et resultat av å utføre funksjonen, vil du motta strengen (Mitt navn er Denis). Hvis vi hadde spesifisert et komma som skilletegn, ville resultatet blitt (Mitt navn er Denis). Jeg tror det ikke var noen problemer med å lære denne funksjonen, og du vil kunne bruke den selv når lage nettsidene dine. Dette avslutter denne artikkelen; som du kan se, var den ganske liten i volum, men veldig viktig fra et praktisk synspunkt. Vi sees snart, lykke til med å lære programmeringsspråk!

Hvis du trenger å konvertere en PHP-array til en streng, finnes det flere verktøy for dette. Bruken av et bestemt verktøy avhenger av målene dine.

1. Implode() funksjon

Med dens hjelp kan du "lime" matriseelementer inn i en streng, gjennom hvilken som helst separator. Les mer: implodere
Eksempel:

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

Denne funksjonen har en antagonist, explode(), som tvert imot deler opp strengen ved skilletegnet i array-elementer. Les mer: eksplodere

2. Serialize() funksjon

Hovedoppgaven til funksjonen er å transformere en variabel (i vårt tilfelle en matrise) til en tilstand som er egnet for lagring.
Den brukes til å lagre en matrise i en streng og deretter konvertere den tilbake til en matrise. Du kan lagre matrisen i en fil eller database, og deretter gjenopprette den neste gang du kjører skriptet.
Les mer: serialiser

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

Så fra denne linjen kan du hente arrayet igjen:

$array = unserialize($string);

3. json_encode() funksjon

Returnerer en JSON-representasjon av dataene. Du kan lese hva det er.
I vårt tilfelle ligner denne funksjonen på serialisering, men JSON brukes hovedsakelig til dataoverføring. Du må bruke dette formatet for å utveksle data med javascript på grensesnittet. Flere detaljer: json_encode

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

Tilbakeringingsfunksjonen json_decode() vil returnere et objekt av typen stdClass hvis den andre parameteren til funksjonen er falsk. Eller det vil returnere en assosiativ matrise hvis true sendes som den andre parameteren. Detaljer her.