PHP praksa: usporedba linija

PHP je dobro ciljan za obradu informacija. Sintaksa jezika predstavljena je kompletnim funkcijama za usporedbu, obradom linija i operaterima usporedbe.

Bilo koji algoritam je slijed izbora i akcija. Ali prije nego što napravite izbor, morate nešto usporediti s nečim. Linija je najmoćniji, učinkovitiji i praktičniji mehanizam za upravljanje algoritmom. Linije su prikaz podataka. A podaci su glavni predmet "brige" bilo kojeg algoritma.

Normalna logika "usporedba-akcija"

Općenito, jezik dinamičkog tipkanja ne pravi nikakva posebna odstupanja u podacima, na primjer, u PHP-u, usporedba niza i broja se malo razlikuje. Broj je također niz koji sadrži samo brojeve, točku i znak, koji se ne koristi za predstavljanje broja u bilo kojem obliku (matematički zapis).


U slučaju sadržaja, broj automata se spaja s linijom bez suvišnih pitanja i bez skrivenih grešaka, čak i ako funkcija gettype () daje 'integer' ili 'double'.
Međutim, postoji razlika između korištenja is_int () i is_numeric (). Prvi daje istinu kada je parametar samo cijeli broj, drugi kada je bilo koji broj ili brojčani niz (varijabla ima tip 'string', ali sadrži sve što je dano matematičkom notacijom). Ovaj jednostavan primjer je dobar primjer, kao u PHP-u, operatori usporedbe linija ('==', '===', '! =',) Mogu dati mnoga iznenađenja. Varijable mogu mijenjati svoj tip, nisu uvijek brojevi, ali gotovo uvijek mogu dovesti do niza. uU ekstremnom slučaju, to će biti prazan redak.


Na temelju gore navedenog, na PHP-u, značajka usporedbe linija je najpopularnija. Što odabrati, odlučiti o developer. Dostupne su mnoge opcije do regularnih izraza.

Granice dostupne funkcionalnosti

PHP-usporedba dviju linija je dobra "izradi" funkcija strpos () - najjeftinija, istinita i praktična opcija. Ako je rezultat ove funkcije broj, onda je jedinstveno jedan redak jednak drugom ili jedan ulazi u drugi. Kardinalni kontrast, ali i apsolutno ispravan pristup - korištenje regularnih izraza.
Ako pozivanje $ cResult = scCheckFileName ($ cStr) daje 'true', tada je string ime datoteke odjela. Imat će samo jednu mogućnost proširenja '.docx' i nema znakova u imenu: samo slova, brojevi i znakovi '_', '-'. Funkcija se može lako pretvoriti u druge vrste datoteka: $ cPtr = '/^([a-zA-Z0-9-_]{4239}).(html|js|css|png|jpg|docx|txt) {1 } $ /u '. Ova mogućnost provjere linije proširuje učitani raspon (primjerice, primijenjena je usporedba nizova PHP-a "za učitavanje datoteka na poslužitelj bez ijedne šanse za ulaznu pogrešku) u html, js, css, pomoću strpos () i preg_match () - krajnosti.

Funkcija PHP: usporedba nizova

Arsenal usporednih jezičnih nizova nije samo funkcija funkcije niza, već je i pitanje algoritma pitanje primjene kombinacije stilova, koristeći sve mogućnosti za postizanje pouzdanog i ispravnog rezultata. ystoho usporedba, ali kombinacija pretraživanje ili zamjenu odmah. Bez akcije uvijek trebao biti isti usporedbu,budući da potonje ne mora nužno dovesti do promjene bilo koje linije. Često morate odabrati jednu ili drugu granu algoritma.
Uobičajena verzija PHP-a: usporedba linija se izvodi funkcijom int strcmp (s1 s2). Rezultat funkcije:
  • 0 - jednaki redovi;
  • -1 - prvi redak je manji od drugog;
  • 1 - prvi redak je veći od drugog.
  • U praksi, to znači da je prvi redak u drugom, iz kojeg funkcija PHP (usporedba linija) donosi odluku. Ograničena verzija strpos (), jer u zadnjem slučaju možete znati poziciju unosa. Funkcija strcmp () je osjetljiva na velika i mala slova. Ako želite usporediti nizove bez uzimanja u obzir slova znakova, PHP nudi korištenje strcasecmp (). Sintaksa je slična. U praksi često trebate raditi s cijelom linijom, ali samo s njezinim dijelom. Da biste to učinili, skup PHP funkcija (usporedba nizova) uključuje strncmp (s1 s2 N). Treći parametar pokazuje da je usporedba samo N-bajt. Rezultat je sličan strcmp ().

    Nizovi, redovi i usporedbe

    Podaci su gotovo uvijek predstavljeni nizovima. Ako uzmemo u obzir nizove, objekte ili informacijske strukture, onda su to samo različite varijante kombinacije jednostavnijih štrajk struktura.
    Linearni nizovi i redovi mogu se prikazati komplementarno. Pretvorba niza u niz je implodirana (array, symbol) funkcija, na primjer: $ margins1 = implode (',', $ style- & gt; getInnerMargin ()); algoritam /rad korisnika; $ margins2 = implode (',', $ style- & gt; getInnerMargin ()) omogućuje spajanje svih pozicija objekta u stavci retka. Tada možete izvršiti usporedbu PHP-linije i istovremeno: $ check = strcmp ($ margina1 $ margina2) i uvjerite se da algoritam ilikorisnik je nešto promijenio (ili nije). Ako izvršite usporedbu na uobičajeni način, tada se morate pomicati kroz elemente polja. To se događa duže i izgleda glomaznije.

    Objekti i žice

    Čak i spektakularnije korištenje PHP-a (usporedba linija) može se implementirati pomoću objektno-orijentiranih ideja. Suvremeni pogled na objekte pretpostavlja prisutnost njihovih svojstava i metoda. Prvi su obično predstavljeni brojevima, redovima, nizovima i drugim objektima. Drugi često uključuje metode pisanja (stavi) u niz i vraćanje iz (get) linije.
    Za razliku od polja, objekt radi svoj posao sa svojim svojstvima i stupa u interakciju s drugim objektima. Objekt je "kompetentan" po tome što su njegova svojstva stvarne vrijednosti za algoritam, program kao cjelinu.
    Ovaj trenutak daje osnovu i mogućnost snimanja zapisa u retku samo potrebnih informacija, a pri obnavljanju iz niza vraćanja svih radnih svojstava u željeno stanje. Obično u bilo kojem objektu postoje značajne i radne (privremene) informacije. Ostvarivanje takve ideje omogućuje vam spremanje ne samo memorije, prostora na disku, zapisa baze podataka, nego i omogućuje usporedbu nizova s ​​jednostavnijim i točnijim sredstvima.

    Sintaksa i semantika

    PHP se dinamički razvija i njegova se funkcija, kako u pogledu usporedbe linija tako iu smislu njihove obrade, stalno poboljšava. Međutim, ništa ne sprečava razvojnog inženjera da pomakne težište u semantiku. Nesumnjivo, dobar funkcionalan, ali njegovo korištenje može se prenijeti na dio sadržaja koda,objekti. Kada je algoritam predstavljen kao sustav interakcije objekta, izgleda mnogo bolje od niza usporedbi i akcija u ravnom sekvencijalnom, klasičnom stilu.

    Povezane publikacije