Php implodeert associatieve array. Efficiënt programmeren in PHP: van arrays tot strings. Gegevensscheidingstekens en sleutels

Hallo, gisteren hebben we bestudeerd hoe je een string kunt splitsen en er een array uit kunt halen. Vandaag breng ik de tegenovergestelde functie onder uw aandacht, met behulp waarvan we dat kunnen converteer array naar string. Deze heet imploderen functie.

Het werkingsprincipe van deze functie is vergelijkbaar met de vorige, maar we zullen er naar kijken aan de hand van een voorbeeld: $matrix = array() ;
"Mijn naam", "naam", "Denis" $string = imploderen(;
" ", $matrix) echo;
?>

$tekenreeks We hebben een array gemaakt met drie elementen en gebruiken functies imploderen heb er een string van gemaakt. Deze functie kan twee parameters aannemen. De eerste is optioneel en geeft aan welk scheidingsteken tussen de array-elementen wordt toegepast. Als deze parameter niet is opgegeven, worden array-elementen standaard gescheiden door een spatie. En de tweede parameter specificeert de array zelf, die naar een string wordt geconverteerd. Dit zijn alle parameters die de onderzochte functie ondersteunt. Als resultaat van het uitvoeren van de functie ontvangt u de string (Mijn naam is Denis). Als we een komma als scheidingsteken hadden opgegeven, zou het resultaat zijn geweest (Mijn naam is Denis). Ik denk dat er geen problemen waren bij het leren van deze functie, en dat je hem wanneer dan ook zelf kunt gebruiken

het maken van uw websites

. Hiermee wordt dit artikel afgesloten; zoals je kunt zien was het vrij klein van omvang, maar vanuit praktisch oogpunt erg belangrijk. Tot snel, veel succes met het leren van programmeertalen!

Als je een PHP-array naar een string moet converteren, zijn hier verschillende tools voor. Het gebruik van een bepaald hulpmiddel hangt af van uw doelen.
1. Implode()-functie

Met zijn hulp kun je array-elementen in een string “lijmen”, via elk scheidingsteken. Lees meer: ​​imploderen

Voorbeeld:

Echo implode("|", array(1, 2, 3)); // zal de regel produceren: 1|2|3

Deze functie heeft een antagonist, explode(), die daarentegen de string bij het scheidingsteken opsplitst in array-elementen. Lees meer: ​​ontploffen
2. Serialize()-functie
De hoofdtaak van de functie is het transformeren van een variabele (in ons geval een array) in een toestand die geschikt is voor opslag.

$array = array("1" =>; "elem 1", "2"=> "elem 2", "3" => "elem 3"); $string = serialiseren($array); echo $string; // zal de regel produceren: a:3:(i:1;s:6:"elem 1";i:2;s:6:"elem 2";i:3;s:7:"elem 3" ;)

Vervolgens kunt u vanaf deze regel de array opnieuw ophalen:

$array = niet-serialiseren($string);

3. json_encode() functie

Retourneert een JSON-weergave van de gegevens. Wat het is, kun je lezen.
In ons geval lijkt deze functie op serialisatie, maar wordt JSON vooral gebruikt voor gegevensoverdracht. Je zult dit formaat moeten gebruiken om gegevens uit te wisselen met javascript op de frontend. Meer details: json_encode

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

De callback-functie json_decode() retourneert een object van het type stdClass als de tweede parameter van de functie false is. Of het retourneert een associatieve array als true wordt doorgegeven als de tweede parameter. Details hier.

JavaScript is geblokkeerd in uw browser. Schakel JavaScript in om de site te laten functioneren!

imploderen

(PHP3, PHP4, PHP5)

imploderen- Voegt array-elementen samen tot een string (converteert array naar string)

Beschrijving

snaar imploderen(stringlijm, array-stukken)

Geeft de tekenreeks terug die is verkregen door de tekenreeksrepresentaties van de elementen van de reeks stukken aan elkaar te koppelen, waarbij een lijmtekenreeks tussen aangrenzende elementen wordt ingevoegd.

Voorbeeld 1: Gebruiksvoorbeeld imploderen()

Opmerking: Om historische redenen, functies imploderen() je kunt argumenten in elke volgorde doorgeven, maar voor unificatie met de functie ontploffen() de gedocumenteerde argumentvolgorde moet worden gebruikt.

Opmerking: Sinds versie 4.3.0 is het lijmfunctieargument imploderen() is optioneel en standaard ingesteld op de lege tekenreeks (""). Voor achterwaartse compatibiliteit wordt aanbevolen om altijd beide argumenten door te geven.

Opmerking: Deze functie is veilig om gegevens in binaire vorm te verwerken.

Deze functie combineert de waarden van array-elementen tot een string. Gebruik de volgende code om de sleutels van array-elementen te combineren:

php imploderen voor geneste arrays

Als u een multidimensionale array doorgeeft om te imploderen, ontvangt u de foutmelding 'Array naar string-conversie'. Om deze fout te voorkomen, gebruikt u het volgende equivalent van de implodefunctie:

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

Zie ook functiebeschrijvingen

PHP biedt als moderne programmeertaal de mogelijkheid om gegevens te verwerken, waarvan het type op het moment van gebruik kan worden bepaald. Het gegevenstype kan tijdens de uitvoering van het programma veranderen.

Tekenreeksen zijn het enige gegevenstype waarnaar gegevens van andere typen op natuurlijke wijze worden omgezet, om de eenvoudige reden dat gegeven gegevens altijd een reeks tekens zijn.

Arrays in PHP

Naast reguliere variabelen biedt PHP de programmeur syntaxis en functies voor het werken met arrays. Naast reguliere arrays die toegang geven tot hun elementen via een sleutel (een getal van 0 tot het aantal elementen), kun je associatieve arrays gebruiken. In het laatste geval kan de toegang zowel worden uitgevoerd via een numerieke index (automatisch toegewezen) als via een door de programmeur gespecificeerde sleutel.

PHP biedt de mogelijkheid om indexen en waarden om te wisselen, wat logisch is omdat een sleutel officieel niet strikter is dan een waarde, maar deze moet wel zorgvuldig worden gebruikt. Programmeertradities doen al lange tijd een beroep op de letters van het Latijnse alfabet. Cyrillisch brengt in de regel het probleem van coderingen met zich mee. U mag de mogelijkheden van de taal niet misbruiken als u praktische en veilige code nodig heeft.

De optimale indexoptie is een betekenisvolle zin in het Engels, bij voorkeur zonder spaties. Het is geweldig dat de PHP-syntaxis ‘vrijheid’ voor sleutels verklaart, maar het is beter om op je eigen ervaring te vertrouwen en je te concentreren op veilige code.

Het meest interessante en praktische kenmerk van de PHP "arrays to string"-oplossing is de mogelijkheid van gelijkwaardige wederzijdse conversie.

PHP: arrays en strings

De PHP-functie "arrays to string": $cLine = implode("/ ", $aStyle) produceert een tekenreeks van alle elementen van de $aStyle-array, gescheiden door het teken "/". Als u " " opgeeft, worden alle elementen samengevoegd tot één doorlopende reeks tekens.

De inverse functie $aStyle = explode("/", $cLine) creëert een array van alle regels die gescheiden zijn door het teken "/".

Wanneer u de functie explode() gebruikt, is het raadzaam, maar niet noodzakelijk, om te controleren op de aanwezigheid van het gewenste scheidingsteken in de bronreeks.

Je kunt ook arrays naar een string in PHP uitvoeren met behulp van meer humane en gecontroleerde middelen, bijvoorbeeld in de for, while, foreach-lus, door de waarden van array-elementen toe te voegen aan een stringvariabele met behulp van de toewijzingsoperator: ".=" of de operator ".", die het proces van het vormen van de resulterende conversietekenreeksen mogelijk maakt (elk element verwerken).

PHP: print array naar string via objecten

Een object is een verzameling gegevens en code. Niets weerhoudt je ervan om bijvoorbeeld twee functies in je code te stoppen: schrijven en lezen. Dankzij overerving en polymorfisme kun je, als je een cirkelobject hebt, de variaties ervan hebben: blauw, rood en groen.

Ze zullen allemaal anders worden geschreven (gelezen), maar hoe de PHP “arrays to string”-oplossing precies wordt uitgevoerd, doet er niet toe. In de kern hebben objecten een bepaalde betekenis, verschillende structuren en verschillende methoden. Een voorbeeld met twee functies - bijzonder. Bij het construeren van een dergelijk mechanisme in PHP zullen arrays in elk specifiek geval anders in een string worden geplaatst.

Dit opent veel mogelijkheden. Het ene object heeft twee arrays, het andere heeft er twintig, en de gemeenschappelijke voorouder (meestal is de allereerste abstract) heeft helemaal niets. Door hun gemeenschappelijke vooroudermethoden te gebruiken, hoeft u zich geen zorgen te maken dat iets niet wordt geschreven, gelezen, verwerkt of weergegeven.

Dankzij overerving kan het, ongeacht welke vorm ergens in het programma wordt gebruikt, worden weergegeven als een string en worden teruggegeven aan het object met die specifieke vorm.

Het omzetten van gegevens van de ene representatie naar de andere is een populair, en vaak het enige, mechanisme om een ​​probleem op te lossen. Een array is een eenvoudig geval van een object. Een string is een natuurlijke representatie van informatie voor verzending, verwerking of opslag.

Ervaring en semantiek geïmplementeerd in PHP: arrays, functies en syntactische structuren maken het mogelijk om optimale oplossingen te creëren voor het verwerken van informatie zoals deze wordt gepresenteerd.

Informatie: tekens, strings en gegevens

In zijn ‘pure’ vorm is informatie een reeks karakters, spraak of een reeks signalen. Bij het programmeren verschijnen strings, arrays en objecten - dit zijn varianten van kunstmatige stringconstructies. Getallen zijn ook tekenreeksen, maar getallen, geen symbolen.

Met PHP kun je op veel verschillende manieren een string naar een array converteren. Er zijn twee speciale functies die dit "op zichzelf" doen:

  • $aArr = explode("x", "string");
  • $aStr = imploderen("y", $aArr).

De eerste functie vindt het scheidingsteken "x" en splitst de string "string" op basis daarvan. De resulterende array bevat precies het aantal elementen (regels) dat zich tussen de "x"-tekens bevindt. Het scheidingsteken hoeft niet noodzakelijkerwijs het klassieke te zijn:

  • komma;
  • punt;
  • puntkomma.

U kunt een tekenreeks splitsen op subtekenreeks of op basis van een speciale combinatie van tekens.

De stringlengte is strlen() in PHP, de arraylengte is count(). In het eerste geval wordt het aantal tekens geteld, in het tweede geval het aantal elementen. Omdat het scheidingsteken niet is opgenomen in de array-elementen, zal de waarde van count() gelijk zijn aan het aantal scheidingstekens in de geconverteerde tekenreeks min één.

Bij omgekeerde PHP-transformatie worden arrays naar string geconverteerd met een scheidingsteken (kan leeg zijn) en worden alle gegevens (getallen en Booleaanse expressies) samengevoegd tot één string. Een element van een array kan een andere array zijn, maar de programmeur moet hier specifiek mee omgaan. De functie implode() is verre van recursief.

In dit voorbeeld is er geen probleem om PHP-arrays naar een string te converteren, zolang er geen andere array tussen hun elementen zit. Wanneer associatieve elementen worden geconverteerd, gaat belangrijke informatie verloren. Met name de elementen ‘pruim’ en ‘perzik’ worden van hun sleutels ontdaan.

Gegevensscheidingstekens en sleutels

Beschouw punten, komma's, dubbele punten, enz. niet als scheidingstekens. Dit is een speciaal geval van het scheiden van gegevens van elkaar. Bij het transformeren van een string in PHP zal een multidimensionale array niet werken en kunnen associatieve indexen nergens vandaan komen.

Het parseren van een tekenreeks met een scheidingsteken levert altijd tekenreeksen op. Maar dit is geen reden om daar te stoppen. Nadat u één regel in zijn samenstellende elementen hebt ontleed, kunt u verder gaan.

Er was bijvoorbeeld een alinea met meerdere zinnen (scheidingsteken "." - punt), verschillende zinnen in de zin (scheidingstekens "," - komma, ";" - puntkomma en "." - punt), de zin bevat woorden ( scheidingsteken " " - spatie, "," - komma, ";"

Met deze demontage in PHP kan gemakkelijk een multidimensionale array worden verkregen, maar het algoritme zal erg lelijk zijn: het aantal scheidingstekens neemt toe en het gebrek aan verbinding tussen aangrenzende alinea's zorgt gegarandeerd voor duplicatie van zinnen, zinnen en woorden.

Door tekenreeksen te ontleden, kunt u reeksen cijfers onmiddellijk omzetten in getallen en logische waarden in waar en onwaar. Maar dit is met name de sleutelinformatie zal nog steeds niet verschijnen, omdat de sleutel de betekenis is, kan er alleen automatisch een numerieke index worden aangemaakt.

Complexe scheiders

Het afdrukken van een PHP-array naar een string wordt vaak gebruikt voor nutsdoeleinden. Een configuratiebestand wordt traditioneel regel voor regel geschreven, met een gelijkteken of een dubbele punt die de naam van de waarde scheidt.

Met deze oplossing wordt de uitvoer van een array in PHP in een bestand gedaan, wordt de stringverdeling automatisch verkregen en met omgekeerde herkenning kunnen associatieve arrays eenvoudig worden verkregen.

Door het bestand te lezen krijgt de programmeur de regels, en door elke regel af te breken met "= of " krijgt hij de naam en de waarde ervan. Een zeer populaire manipulatie, hoewel het moderner is om XML-notatie te gebruiken om de eenvoudige reden dat naast namen en waarden aanvullende gegevens kunnen worden opgeslagen en hersteld, bijvoorbeeld variabele attributen.

In het voorbeeld met alinea's (bijvoorbeeld natuurlijke tekst om een ​​woordenboek op te bouwen of het resultaat van parseren om een ​​gegevensvoorbeeld te maken) is het niet de specifieke procedure voor het converteren van een string naar een array, maar een alomvattende oplossing voor alle alinea's die belangrijk is. of informatieblokken.

Normaal gesproken zal een dergelijke taak een omgekeerde oplossing vereisen, waarbij de gegenereerde “set” van gegevens moet worden gebruikt om er informatie in te zoeken of om weer in een string te worden samengevoegd.

Strings demonteren en opnieuw samenstellen - gegevensvalidatie

In PHP: arrays to string is de exacte oplossing. Als de broninformatie syntaxisfouten, extra spaties of onjuiste symbolen zou kunnen bevatten, zullen deze er niet zijn tijdens het parseren. Het resultaat van het transformeren van de initiële informatie volgens de ongeschreven wetten van programmeren wordt strikt formeel uitgevoerd en het resultaat zal duidelijk in de schappen liggen.

De omgekeerde procedure levert de juiste bronreeks op. Als je de hoeveelheid broninformatie vergelijkt met het resultaat van de omgekeerde transformatie, kun je conclusies trekken over waar fouten zijn gemaakt of gegevensverlies is opgetreden. In PHP kan de lengte van een array in de context van de oorspronkelijke lengte van de string ons in staat stellen de nodige conclusies te trekken.

Tijd-, datum- en gebeurtenistags

Bij de ontwikkeling van kritische projecten, bij het maken van besturingsobjecten, bijvoorbeeld tijd of gebeurtenissen, is een rij één representatie van gegevens, en een array een andere. Maar in de toepassing zijn ze gelijkwaardig.

Wanneer het nodig is om wiskundige of logische berekeningen uit te voeren, manipuleert de programmeur de array;

Toegang tot indexen tot databasevelden - een echte praktijk van de gezamenlijke actie van MySQL en PHP, arrays op een rij = één index op de rijen van verschillende databasetabellen. Als de database een tiental tabellen bevat en in elke tabel de rijen kunnen worden geselecteerd door een combinatie van namen (waarden) in een bepaalde combinatie, kunt u, nadat u rijtoegangsarrays hebt gemaakt, er vervolgens toegang toe krijgen met behulp van een indexvormingsalgoritme, en niet door te zoeken in de database.

Het omzetten van een array naar een string kan worden beschouwd als een algoritme voor het vormen van de gewenste index, terwijl de inhoud van de array wordt gevormd onder controle van totaal verschillende gebeurtenissen of gebruikersacties.

Arrays samenvoegen

Met PHP-functies kunt u arrays vrijelijk manipuleren. Maar er doen zich altijd problemen voor bij het selecteren van unieke gegevens of het vinden van gegevens in een array.

Het eerste probleem wordt iteratief opgelost: een array (of meerdere arrays) wordt herhaald en er wordt een reeks unieke waarden gevormd - een voor de hand liggende oplossing, maar niet de meest effectieve.

Het vinden van gegevens in een array is ook een cyclus, en als er veel elementen zijn, zal de cyclus behoorlijk lang zijn en merkbaar veel tijd in beslag nemen. Het is mogelijk om een ​​array naar een string te sturen en de functie strpos() te gebruiken om een ​​voorkomen van het gewenste element te vinden, maar dit introduceert het probleem van het detecteren van een foutief voorkomen.

Er werd bijvoorbeeld gezocht naar het woord ‘tray’ en het voorkomen ervan werd gevonden in het woord ‘hamer’. U kunt dergelijke fouten verwijderen als alle elementen van de array tot een string worden samengevoegd met behulp van een speciaal scheidingsteken, wat onzekerheid voorkomt.

Als de regel "[tray]" en "[hammer]" bevat, zijn er geen problemen met het zoeken.

Maar er is geen garantie dat de functie strpos() bij reële hoeveelheden gegevens sneller zal werken dan een lus die over array-elementen itereert.

De beste oplossing is dat de array of string zelf het goede doet. Als we arrays enigszins ingewikkeld maken en strings vereenvoudigen, omdat de eerste een speciaal geval van een object zijn, en de laatste traditionele serialisatie, dan zal iedereen zijn eigen ding doen.

Op het juiste moment is het object een array, en als er een string nodig is, zal het een string zijn. In dit geval is het absoluut niet nodig om tegelijkertijd zowel een array als een string in het object te hebben. U kunt een unieke datastructuur opbouwen met snelle toegang. En plaats de logica "array" en "string" in objectmethoden.

De objectgeoriënteerde aanpak vereenvoudigt de oplossing van veel problemen bij het verwerken van stringinformatie; het zorgt ervoor dat je je niet hoeft te concentreren op arrays, lussen en de stringverwerkingsfunctie van PHP zelf.

Zowel strings als arrays zijn de echte betekenis van realiteit, toepassing en taak. Er bestaat niet zo'n taak: het verzenden van arrays naar strings in PHP. Maar er is een taak om een ​​paragraaf (zin, woordgroep, woord, getal...) te verkrijgen op basis van de resultaten verkregen in het vorige algoritme.

Het vorige algoritme heeft een betekenis en de exacte uitdrukking van deze betekenis is opgenomen in de array. De volgende fase van het algoritme is de transformatie van betekenis naar een andere representatie, handig voor verdere verwerking of toepassing.

Door het algoritme te zien als de dynamiek van betekenis en transformatie van data, is het mogelijk om betrouwbare, begrijpelijke en effectieve transformaties te vormen.