Php implode assosiatiivinen array. Tehokas ohjelmointi PHP:ssä: taulukot merkkijonoihin. Tietojen erottimet ja avaimet

Hei, eilen opimme kuinka voit jakaa merkkijonon ja saada siitä taulukon. Tänään tuon huomionne vastakkaisen toiminnon, jonka avulla voimme muuntaa taulukon merkkijonoksi. Tätä kutsutaan romahdustoiminto.

Tämän toiminnon toimintaperiaate on samanlainen kuin edellisessä, mutta tarkastelemme sitä esimerkin avulla: $array = array() ;
"Nimeni", "nimi", "Denis" $string = räjähtää(;
" ", $array) kaiku;
?>

$string Loimme taulukon kolmella elementillä ja käyttämällä rikkoa toimintoja muutti sen nauhaksi. Tämä toiminto voi ottaa kaksi parametria. Ensimmäinen on valinnainen ja tarkoittaa sitä, mitä erotinta käytetään taulukon elementtien väliin. Jos tätä parametria ei ole määritetty, taulukon elementit erotetaan oletusarvoisesti välilyönnillä. Ja toinen parametri määrittää itse taulukon, joka muunnetaan merkkijonoksi. Nämä ovat kaikki parametrit, joita tutkittava funktio tukee. Toiminnon suorittamisen seurauksena saat merkkijonon (Minun nimeni on Denis). Jos olisimme määrittäneet erottimeksi pilkun, tulos olisi ollut (Nimeni on Denis). Mielestäni tämän toiminnon oppimisessa ei ollut ongelmia, ja voit käyttää sitä itse milloin tahansa

verkkosivustojesi luomiseen

. Tämä päättää tämän artikkelin, kuten näet, se oli melko pieni määrä, mutta erittäin tärkeä käytännön näkökulmasta. Nähdään pian, onnea ohjelmointikielten opiskeluun!

Jos sinun on muutettava PHP-taulukko merkkijonoksi, siihen on useita työkaluja. Tietyn työkalun käyttö riippuu tavoitteistasi.
1. Implode()-funktio

Sen avulla voit "liimata" taulukon elementtejä merkkijonoon minkä tahansa erottimen kautta. Lue lisää: räjähtää

Esimerkki:

Echo implode("|", array(1, 2, 3)); // tuottaa rivin: 1|2|3

Tällä funktiolla on antagonisti, explode(), joka päinvastoin jakaa erottimen merkkijonon taulukkoelementeiksi. Lue lisää: räjähtää
2. Serialize()-funktio
Toiminnon päätehtävä on muuttaa muuttuja (tapauksessamme taulukko) tallennettavaksi sopivaan tilaan.

$array = array("1" =>; "element 1", "2"=> "element 2", "3" => "element 3"); $merkkijono = serialize($array); echo $string; // tuottaa rivin: a:3:(i:1;s:6:"elem 1";i:2;s:6:"elem 2";i:3;s:7:"elem 3" ;)

Sitten tältä riviltä saat taulukon uudelleen:

$array = unserialize($string);

3. json_encode()-funktio

Palauttaa datan JSON-esityksen. Voit lukea mikä se on.
Meidän tapauksessamme tämä toiminto muistuttaa serialisointia, mutta JSONia käytetään pääasiassa tiedonsiirtoon. Sinun on käytettävä tätä muotoa tietojen vaihtamiseen javascriptin kanssa käyttöliittymässä. Lisätietoja: json_encode

$taulukko = array(1 => "yksi", 2 => "kaksi"); $json = json_encode($array); echo $json; // ("1":"yksi","2":"kaksi")

Takaisinsoittofunktio json_decode() palauttaa stdClass-tyypin objektin, jos funktion toinen parametri on epätosi. Tai se palauttaa assosiatiivisen taulukon, jos tosi on välitetty toisena parametrina. Yksityiskohdat täältä.

JavaScript on estetty selaimessasi. Ota JavaScript käyttöön, jotta sivusto toimii!

räjähtää

(PHP 3, PHP 4, PHP 5)

räjähtää- Liitä taulukon elementit merkkijonoksi (muuntaa taulukon merkkijonoksi)

Kuvaus

merkkijono räjähtää(merkkijonoliimaa, taulukon palat)

Palauttaa merkkijonon, joka on saatu ketjuttamalla kappalematriisin elementtien merkkijonoesitykset lisäämällä liimamerkkijono vierekkäisten elementtien väliin.

Esimerkki 1: Käyttöesimerkki räjähtää ()

Kommentti: Historiallisista syistä, toiminnoista räjähtää () Voit antaa argumentit missä tahansa järjestyksessä, mutta yhdistämiseksi funktion kanssa räjähtää() dokumentoitua argumenttijärjestystä tulee käyttää.

Kommentti: Versiosta 4.3.0 lähtien liimafunktion argumentti räjähtää () on valinnainen ja oletuksena on tyhjä merkkijono (""). Taaksepäin yhteensopivuuden vuoksi on suositeltavaa välittää aina molemmat argumentit.

Kommentti: Tämä toiminto on turvallista käsitellä tietoja binäärimuodossa.

Tämä toiminto yhdistää taulukon elementtien arvot merkkijonoksi. Voit yhdistää taulukon elementtien avaimet käyttämällä seuraavaa koodia:

php implode sisäkkäisille taulukoille

Jos siirrät moniulotteisen taulukon räjähtämään, saat "Matriisin muunnos merkkijonoksi" -virheen. Vältä tämä virhe käyttämällä seuraavaa implode-funktiota vastaavaa:

Funktio multi_implode($glue, $array) ( $_array=array(); foreach($array as $val) $_array = is_array($val)? multi_implode($glue, $val) : $val; return implode($ liima, $_array);

Katso myös toimintokuvaukset

PHP modernina ohjelmointikielenä tarjoaa mahdollisuuden käsitellä tietoja, joiden tyyppi voidaan määrittää käyttöhetkellä. Tietotyyppi voi muuttua ohjelman suorituksen aikana.

Merkkijonot ovat ainoa tietotyyppi, johon muun tyyppiset tiedot luonnollisesti välitetään siitä yksinkertaisesta syystä, että mikä tahansa tieto on aina merkkijono.

Taulukot PHP:ssä

Tavallisten muuttujien lisäksi PHP tarjoaa ohjelmoijalle syntaksia ja funktioita taulukoiden kanssa työskentelyyn. Tavallisten taulukoiden lisäksi, jotka tarjoavat pääsyn elementteihinsä avaimella (numero 0 - elementtien lukumäärä), voit käyttää assosiatiivisia taulukoita. Jälkimmäisessä tapauksessa pääsy voidaan suorittaa sekä numeerisella indeksillä (määritetty automaattisesti) että ohjelmoijan määrittelemällä näppäimellä.

PHP tarjoaa mahdollisuuden vaihtaa indeksejä ja arvoja, mikä on järkevää, koska avain ei ole virallisesti arvoa tiukempi, mutta sinun tulee käyttää sitä huolellisesti. Ohjelmointiperinteet ovat pitkään vedonneet latinalaisten aakkosten kirjaimiin. Kyrillinen yleensä tuo mukanaan koodausongelman. Älä käytä väärin kielen ominaisuuksia, kun tarvitset käytännöllistä ja turvallista koodia.

Optimaalinen indeksivaihtoehto on merkityksellinen englanninkielinen lause, mieluiten ilman välilyöntejä. On hienoa, että PHP-syntaksi julistaa "vapauden" avaimille, mutta on parempi luottaa omaan kokemukseesi ja keskittyä turvalliseen koodiin.

Mielenkiintoisin ja käytännöllisin ominaisuus PHP "arrays to string" -ratkaisussa on mahdollisuus vastaavaan keskinäiseen muuntamiseen.

PHP: Arrays and Strings

PHP "arrays to string" -funktio: $cLine = implode("/ ", $aStyle) tuottaa merkkijonon kaikista $aStyle-taulukon elementeistä erotettuna "/" -merkillä. Jos määrität " ", kaikki elementit yhdistetään yhdeksi jatkuvaksi merkkijonoksi.

Käänteisfunktio $aStyle = explode("/", $cLine) luo joukon kaikista riveistä, jotka erotetaan "/"-merkillä.

Explode()-funktiota käytettäessä on suositeltavaa, mutta ei välttämätöntä, tarkistaa, onko haluttu erotinmerkki lähdemerkkijonossa.

Voit myös tulostaa taulukoita merkkijonoon PHP:ssä inhimillisemmillä ja kontrolloiduilla tavoilla. Esimerkiksi foreach-silmukassa lisäämällä taulukon elementtien arvot merkkijonomuuttujaan käyttämällä määritysoperaattoria: ".=". tai "."-operaattori, joka mahdollistaa tuloksena olevien muunnosmerkkijonojen muodostamisen (käsittele jokainen elementti).

PHP: Tulosta taulukko merkkijonoon objektien kautta

Objekti on kokoelma dataa ja koodia. Mikään ei estä sinua laittamasta koodiisi esimerkiksi kahta funktiota: kirjoitus ja lukeminen. Perinnön ja polymorfismin ansiosta, jos sinulla on ympyräobjekti, sinulla voi olla sen muunnelmia: sininen, punainen ja vihreä.

Jokainen kirjoitetaan (luetaan) eri tavalla, mutta sillä, miten PHP "arrays to string" -ratkaisu suoritetaan, ei ole merkitystä. Esineillä on ytimessä tietty merkitys, niillä on erilaiset rakenteet ja erilaiset menetelmät. Esimerkki kahdella funktiolla - erityisesti. Kun rakennetaan tällainen mekanismi PHP:ssä, taulukot sijoitetaan merkkijonoon eri tavalla kussakin tapauksessa.

Tämä avaa paljon mahdollisuuksia. Yhdellä objektilla on kaksi taulukkoa, toisella kaksikymmentä, ja yhteisellä esi-isällä (yleensä ensimmäinen on abstrakti) ei ole mitään. Käyttämällä heidän yleisiä esivanhempiensa menetelmiä sinun ei tarvitse huolehtia siitä, että jotain ei kirjoiteta, lueta, käsitellään tai näytetä.

Perinnön ansiosta riippumatta siitä, mitä muotoa käytetään missä tahansa ohjelmassa, se voidaan esittää merkkijonona ja siirtää takaisin kyseisen muodon objektiin.

Tietojen muuntaminen esityksestä toiseen on suosittu, usein ainoa mekanismi ongelman ratkaisemiseksi. Taulukko on yksinkertainen tapaus objektista. Merkkijono on luonnollinen esitys informaatiosta lähetettäväksi, prosessoitavaksi tai tallennettavaksi.

PHP:ssä toteutettu kokemus ja semantiikka: taulukot, funktiot ja syntaktiset rakenteet mahdollistavat optimaalisten ratkaisujen luomisen tiedon käsittelyyn sellaisena kuin se esitetään.

Tiedot: merkit, merkkijonot ja tiedot

"Puhdassa" muodossaan tieto on merkkijono, puhe tai signaalisarja. Ohjelmoinnissa esiintyy merkkijonoja, taulukoita ja objekteja - nämä ovat muunnelmia keinotekoisista merkkijonorakenteista. Numerot ovat myös merkkijonoja, mutta numeroita, eivät symboleja.

PHP antaa sinun muuntaa merkkijonon taulukoksi monilla eri tavoilla. On olemassa kaksi erikoistoimintoa, jotka tekevät tämän "itsekseen":

  • $aArr = explode("x", "merkkijono");
  • $aStr = implode("y", $aArr).

Ensimmäinen funktio löytää erottimen "x" ja jakaa merkkijonon "merkkijono" käyttämällä sitä. Tuloksena oleva taulukko sisältää täsmälleen sen määrän elementtejä (rivejä), jotka ovat "x"-merkkien välissä. Erotinsymboli ei välttämättä ole klassinen:

  • pilkku;
  • piste;
  • puolipiste.

Voit jakaa merkkijonon osamerkkijonolla tai erityisellä merkkiyhdistelmällä.

Merkkijonon pituus on strlen() PHP:ssä, taulukon pituus on count(). Ensimmäisessä tapauksessa lasketaan merkkien määrä, toisessa tapauksessa elementtien lukumäärä. Koska erotinmerkki ei sisälly taulukon elementteihin, count()-arvon arvo on yhtä suuri kuin muunnetun merkkijonon erottimien lukumäärä miinus yksi.

PHP:n käänteisessä muunnoksessa taulukot merkkijonoksi muunnetaan erotinmerkillä (voi olla tyhjä), ja kaikki tiedot (luvut ja Boolen lausekkeet) yhdistetään yhdeksi merkkijonoksi. Taulukon elementti voi olla toinenkin taulukko, mutta ohjelmoijan on käsiteltävä tämä tapaus erikseen. Implode()-funktio on kaukana rekursiivisesta.

Tässä esimerkissä PHP-taulukoiden muuntaminen merkkijonoksi ei ole ongelma, kunhan niiden elementtien joukossa ei ole muuta taulukkoa. Kun assosiatiiviset elementit muunnetaan, avaintiedot menetetään. Erityisesti elementeiltä "luumu" ja "persikka" poistetaan avaimet.

Tietojen erottimet ja avaimet

Älä pidä pisteitä, pilkkuja, kaksoispisteitä jne. erottimina. Tämä on erikoistapaus tietojen erottamiseen toisistaan. Kun merkkijonoa muunnetaan PHP:ssä, moniulotteinen taulukko ei toimi, eikä assosiatiivisilla indekseillä ole mitään alkuperää.

Merkkijonon jäsentäminen erottimella tuottaa aina merkkijonoja. Mutta tämä ei ole syy lopettaa tähän. Kun olet jäsentänyt yhden rivin sen komponenttielementeiksi, voit siirtyä eteenpäin.

Esimerkiksi kappaleessa oli useita lauseita (erotin "." - piste), useita lauseita lauseessa (erottimet "," - pilkku, ";" - puolipiste ja "." - piste), lause sisältää sanoja ( erotin " " - välilyönti, "," - pilkku, ";" - puolipiste ja "."

Tällä PHP:n purkamisella saadaan helposti moniulotteinen taulukko, mutta algoritmista tulee erittäin ruma: erottimien määrä kasvaa, ja yhteyden puute vierekkäisten kappaleiden välillä takaa lauseiden, lauseiden ja sanojen päällekkäisyyden.

Jäsentämällä merkkijonoja voit välittömästi muuntaa numerosarjat numeroiksi ja loogiset arvot todeksi ja epätosi. Mutta tämä on erityisesti, avaintiedot eivät silti näy, koska avain on merkitys, vain numeerinen indeksi voidaan luoda automaattisesti.

Monimutkaiset erottimet

PHP-taulukon tulostamista merkkijonoon käytetään usein hyödyllisyystarkoituksiin. Kokoonpanotiedosto kirjoitetaan perinteisesti rivi riviltä, ​​jolloin nimi erotetaan arvosta yhtäsuuruusmerkillä tai kaksoispisteellä.

Tällä ratkaisulla PHP:n taulukon tulostus tehdään tiedostossa, merkkijonojen jako saadaan automaattisesti ja käänteisellä tunnistuksella assosiatiiviset taulukot saadaan helposti.

Lukemalla tiedoston ohjelmoija saa rivit ja katkaisemalla jokaisen rivin "=" tai ":" -merkillä, hän saa nimen ja sen arvon. Erittäin suosittu manipulaatio, vaikkakin nykyaikaisempaa on käyttää XML-merkintää siitä yksinkertaisesta syystä, että nimien ja arvojen lisäksi voidaan tallentaa ja palauttaa lisätietoa, esimerkiksi muuttujaattribuutteja.

Kappaleita sisältävässä esimerkissä (esimerkiksi luonnollinen teksti sanakirjan muodostamiseksi tai jäsennystulos datanäytteen luomiseksi) ei ole tärkeätä erityistä menettelyä merkkijonon muuntamiseksi taulukoksi, vaan kattava ratkaisu kaikille kappaleille. tai tietolohkoja.

Tyypillisesti tällainen tehtävä vaatii käänteisen ratkaisun, jolloin luotua "datajoukkoa" täytyy käyttää etsimään siitä tietoa tai koota se takaisin merkkijonoksi.

Merkkijonojen purkaminen ja uudelleen kokoaminen - tietojen validointi

PHP:ssa: taulukot merkkijonoon on tarkka ratkaisu. Jos lähdetiedoissa voi olla syntaksivirheitä, ylimääräisiä välilyöntejä tai vääriä symboleja, ne eivät ole siellä jäsentämisen aikana. Alkutietojen muuntamisen tulos ohjelmoinnin kirjoittamattomien lakien mukaan suoritetaan tiukasti muodollisesti, ja tulos on selkeästi hyllyillä.

Käänteinen menettely tuottaa oikean lähdemerkkijonon. Jos vertailet lähdetietojen määrää ja käänteisen muunnoksen tulosta, voit tehdä johtopäätöksiä virheiden tai tietojen häviämisen paikasta. PHP:ssä taulukon pituus merkkijonon alkuperäisen pituuden yhteydessä voi antaa meille mahdollisuuden tehdä tarvittavat johtopäätökset.

Aika-, päivämäärä- ja tapahtumatunnisteet

Kriittisten projektien kehittämisessä ohjausobjekteja, esimerkiksi aikaa tai tapahtumia, luotaessa rivi on yksi esitys tiedosta ja taulukko on toinen. Mutta sovelluksessa ne ovat samanarvoisia.

Kun on tarpeen suorittaa matemaattisia tai loogisia laskelmia, ohjelmoija käsittelee taulukkoa, kun on tarpeen tallentaa tietoja, hän käyttää merkkijonoversiota.

Pääsy indekseihin tietokantakentille - todellinen käytäntö MySQL:n ja PHP:n yhteistoiminnasta, taulukot rivissä = yksi indeksi useiden tietokantataulukoiden riveillä. Jos tietokanta sisältää tusina taulukkoa ja jokaisessa taulukossa rivit voidaan valita nimien (arvojen) yhdistelmällä tietyssä yhdistelmässä, niin rivien pääsytaulukot luotuasi voit myöhemmin päästä niihin käsiksi indeksinmuodostusalgoritmilla, eikä tietokannasta hakemalla.

Matriisin muuntamista merkkijonoksi voidaan pitää algoritmina halutun indeksin muodostamiseksi, kun taas taulukon sisältö muodostuu täysin erilaisten tapahtumien tai käyttäjän toimien ohjauksessa.

Taulukkojen yhdistäminen

PHP-funktioiden avulla voit vapaasti käsitellä taulukoita. Mutta ongelmia syntyy aina yksilöllisten tietojen valitsemisessa tai tietojen löytämisessä taulukosta.

Ensimmäinen ongelma ratkaistaan ​​iteratiivisesti: matriisi (tai useita taulukoita) iteroidaan ja muodostuu ainutlaatuisten arvojen merkkijono - ilmeinen ratkaisu, mutta ei tehokkain.

Tietojen etsiminen taulukosta on myös sykli, ja jos elementtejä on paljon, sykli on melko pitkä ja vie huomattavan paljon aikaa. On mahdollista lähettää taulukko merkkijonoon ja käyttää strpos()-funktiota etsimään halutun elementin esiintyminen, mutta tämä aiheuttaa virheellisen esiintymän havaitsemisongelman.

Esimerkiksi sanaa "tarjotin" etsittiin, ja sen esiintyminen löytyi sanasta "vasara". Voit päästä eroon tällaisista virheistä, jos yhdistät kaikki taulukon elementit merkkijonoon erityisellä erottimella, mikä välttää epäselvyyden.

Jos rivillä on "[lokero]" ja "[vasara]", haussa ei ole ongelmia.

Mutta ei ole takeita siitä, että todellisilla tietomäärillä strpos()-funktio toimii nopeammin kuin taulukkoelementtien yli iteroiva silmukka.

Paras ratkaisu on, että matriisi tai merkkijono tekee oikein. Jos monimutkaisemme taulukoita ja yksinkertaistamme merkkijonoja, koska edellinen on objektin erikoistapaus ja jälkimmäiset perinteistä serialisointia, niin jokainen tekee oman asiansa.

Oikealla hetkellä objekti on taulukko, ja kun merkkijonoa tarvitaan, se on merkkijono. Tässä tapauksessa ei ehdottomasti ole välttämätöntä, että objektissa on samanaikaisesti sekä taulukkoa että merkkijonoa. Voit rakentaa ainutlaatuisen tietorakenteen nopealla pääsyllä. Ja laita "taulukko" ja "merkkijono" logiikka objektimenetelmiin.

Olio-lähestymistapa yksinkertaistaa monien merkkijonotietojen käsittelyongelmien ratkaisua, joten voit välttää keskittymisen taulukoihin, silmukoihin ja itse PHP:n merkkijonojen käsittelytoimintoon.

Sekä merkkijonot että taulukot ovat todellisuuden, sovelluksen, tehtävän todellinen merkitys. Tällaista tehtävää ei ole - taulukoiden lähettäminen merkkijonoihin PHP: ssä. Mutta on tehtävä saada kappale (lause, lause, sana, numero...) edellisen algoritmin tulosten perusteella.

Edellisellä algoritmilla on merkitys, ja tämän merkityksen tarkka ilmaus sisältyy taulukkoon. Algoritmin seuraava vaihe on merkityksen muuntaminen toiseksi esitykseksi, joka on kätevä jatkokäsittelyä tai soveltamista varten.

Tarkastelemalla algoritmia tiedon merkityksen ja muuntamisen dynamiikkana on mahdollista muodostaa luotettavia, ymmärrettäviä ja tehokkaita muunnoksia.