PHP on melko hyvä tietojenkäsittelyssä. Kielisyntaksia edustaa kattava toimintojen joukko merkkijonojen vertaamiseen, käsittelemiseen ja vertailutoimintoihin.
Любой алгоритм - последовательность выборов и toimet. Mutta ennen kuin teet valinnan, sinun on verrattava jotain johonkin. Merkkijonot ovat tehokkain, tehokkain ja käytännöllisin mekanismi algoritmin ohjaamiseksi. Rivit - muunnelma datan esityksestä. Ja tiedot ovat minkä tahansa algoritmin "huolenaiheen" pääaihe.
Perinteinen vertailu-toimintalogiikka
Yleensä dynaamisesti kirjoitettu kieli eitekee tiedoissa erityisiä eroja, esimerkiksi PHP:ssä merkkijonon ja luvun vertailu ei ole paljon erilaista. Numero on myös merkkijono, kun se sisältää vain numeroita, pistettä eikä merkkejä, joita ei käytetä esittämään numeroa missään muodossa (matemaattinen merkintä).
Sisällön tapauksessa numero yhdistetään automaattisesti merkkijonoon ilman tarpeettomia kysymyksiä ja piilovirheitä, vaikka gettype()-funktio palauttaisi "integer" tai "double".
Toiminnon käyttämisessä on kuitenkin erois_int() ja is_numeric(). Ensimmäinen antaa true, kun parametri on vain kokonaisluku, toinen, kun mikä tahansa numero tai numeerinen merkkijono (muuttuja on tyyppiä "string", mutta sisältää kaiken, mitä matemaattinen merkintä antaa).
Tämä yksinkertainen esimerkki on hyvä esimerkki siitä, kuinka se tehdään PHP:ssäMerkkijonojen vertailuoperaattorit ("==", "===", "!=", ...) voivat tarjota monia yllätyksiä. Muuttujat voivat muuttaa tyyppiään; ne eivät aina ole numeroita, mutta ne voidaan melkein aina heittää merkkijonoon. Äärimmäisissä tapauksissa se on tyhjä merkkijono.
Yllä olevan perusteella merkkijonojen vertailutoiminto on PHP:n suosituin. Kehittäjä voi päättää, kumman valitsee. Saatavilla on monia vaihtoehtoja, mukaan lukien säännölliset lausekkeet.
Käytettävissä olevien toimintojen rajat
Kahden merkkijonon PHP-vertailu "toimii" hyvinstrpos() on halvin, tarkin ja käytännöllisin vaihtoehto. Jos tämän funktion tulos on numero, niin yksi merkkijono on ehdottomasti yhtä suuri kuin toinen tai toinen sisältyy toiseen.
Täysin päinvastainen, mutta myös ehdottoman oikea lähestymistapa on säännöllisten lausekkeiden käyttö.
Jos funktio kutsuu $cResult =scCheckFileName($cStr) antaa "true", mikä tarkoittaa, että merkkijono on Word-tiedoston nimi. Siinä on vain yksi laajennusvaihtoehto ".docx" eikä nimessä ole symboleja: vain kirjaimet, numerot ja merkit "_", "-".
Toiminto voidaan helposti muuntaa muihintiedostotyypit: $cPtr = "/^([a-zA-Z...0-9-_]{4 239}).(html|js|css|png|jpg|docx|txt){1}$/ u". Tämä merkkijonon tarkistusvaihtoehto laajentaa ladattujen merkkijonojen valikoimaa (esimerkiksi PHP:ssä merkkijonovertailua käytetään "tiedostojen lataamiseen palvelimelle ilman yhtäkään mahdollisuutta syöttövirheeseen") html-, js-, css-, ...
Käyttämällä strpos() ja preg_match() -äärimmäisyydet. Ne eivät liity suoraan termien vertailuun. Mutta kysymys algoritmista on kysymys tyylien yhdistelmän soveltamisesta käyttämällä kaikkia mahdollisuuksia luotettavan ja oikean tuloksen saavuttamiseksi.
PHP-toiminnallisuus: merkkijonojen vertailu
Kielen merkkijonovertailujen arsenaali ei ole vainpuhtaan vertailun toiminnot, mutta myös yhdistelmä haun tai korvaamisen kanssa suoraan. Toiminnon ei aina tarvitse olla sama kuin vertailu, koska jälkimmäinen ei välttämättä muuta mitään riviä. Usein sinun on valittava yksi tai toinen algoritmin haara.
Tavallinen PHP-versio: merkkijonojen vertailu suoritetaan int strcmp (s1, s2) -funktiolla.
Toiminnan tulos:
- 0 - merkkijonot ovat yhtä suuret;
- -1 - ensimmäinen rivi on pienempi kuin toinen;
- 1 - ensimmäinen rivi on suurempi kuin toinen.
Käytännössä tämä tarkoittaa, että ensimmäinen tulee sisäänrivistä toiseen, josta PHP-funktio (merkkijonovertailu) tekee päätöksen. Suppeampi muunnelma strpos(:sta), koska jälkimmäisessä tapauksessa esiintymän paikka voidaan tietää.
Strcmp()-funktio on isot ja pienet kirjaimet erotteleva. Jos sinun on verrattava merkkijonoja kirjainkoolla välinpitämättömällä tavalla, PHP suosittelee strcasecmp(:n) käyttöä. Syntaksi on samanlainen.
Käytännössä usein ei tarvitse työskennellä kaikkien kanssamerkkijonoa, mutta vain osan kanssa. Tätä varten PHP-funktioiden joukko (merkkijonojen vertailu) sisältää strncmp (s1, s2, N). Kolmas parametri määrittää vain N-tavun vertailun. Tulos on sama kuin strcmp().
Taulukot, merkkijonot ja vertailu
Tiedot esitetään melkein aina merkkijonoina. Jos tarkastelemme taulukoita, objekteja tai tietorakenteita, nämä ovat yksinkertaisesti yksinkertaisempien merkkijonorakenteiden erilaisia yhdistelmiä.
Merkkijonotaulukot ja merkkijonot voivat ollaesitetään täydentävästi. Taulukon muuntaminen merkkijonoksi käyttämällä implode(taulukko, symboli)-funktiota, esimerkiksi: $margins1 = implode(", ", $tyyli->getInnerMargin()); ... algoritmi/käyttäjätyö ...; $margins2 = implode(", ", $style->getInnerMargin()) antaa sinun yhdistää kaikki objektien sijainnit sijaintimerkkijonoon.
Tämän jälkeen voit suorittaa PHP-merkkijonovertailun jakerran: $check = strcmp ($margins1, $margins2) ja varmista, että algoritmi tai käyttäjä on muuttanut jotain (tai ei). Jos teet vertailun tavalliseen tapaan, joudut iteroimaan taulukoiden elementtejä. Tämä kestää kauemmin ja näyttää hankalammalta.
Objektit ja merkkijonot
Vielä tehokkaampi PHP:n käyttö (merkkijonovertailu) voidaan toteuttaa olio-ideoiden avulla.
Moderni idea esineistäolettaa, että niillä on ominaisuuksia ja menetelmiä. Ensin mainittuja edustavat yleensä numerot, merkkijonot, taulukot ja muut objektit. Jälkimmäiset sisältävät usein menetelmiä merkkijonoon kirjoittamiseen (put) ja merkkijonosta palauttamiseen (get).
Toisin kuin taulukot, objekti toimiisen ominaisuuksia ja vuorovaikutuksessa muiden esineiden kanssa. Objekti on "pätevä" siinä, missä sen ominaisuuksilla on todellista merkitystä algoritmille, ohjelmalle kokonaisuutena.
Tämä hetki tarjoaa perustan ja mahdollisuudentietueet, kirjaa riville vain tarvittavat tiedot ja riviltä palauttaessasi palauta kaikki toimintaominaisuudet haluttuun tilaan. Tyypillisesti mikä tahansa esine sisältää olennaista ja toiminnallista (tilapäistä) tietoa. Tämän idean toteuttamisen avulla voit säästää muistin, levytilan ja tietokantatietueiden lisäksi myös merkkijonojen vertailua yksinkertaisemmilla ja tarkemmilla tavoilla.
Syntaksi ja semantiikka
PHP kehittyy dynaamisesti ja sen toiminnallisuus on entiselläänSekä merkkijonojen vertailun että niiden käsittelyn suhteen sitä parannetaan jatkuvasti. Mikään ei kuitenkaan estä kehittäjää siirtämästä painopistettä semantiikan alueelle.
Epäilemättä toiminnallisuus on hyvä, mutta se onkäyttö voidaan siirtää koodin semanttiseen osaan, objekteihin. Kun algoritmi esitetään objektien vuorovaikutuksen järjestelmänä, se näyttää paljon paremmalta kuin vertailujen ja toimintojen sarja suorassa peräkkäisessä, klassisessa tyylissä.