DatamaskinerProgrammering

PHP Praksis: streng sammenligning

PHP er fokusert på god informasjon håndtering. Syntaksen til språket er representert fullt funksjonelt sett av sammenligningsfunksjoner, strengen behandling, sammenlikningsoperatorene.

Enhver algoritme - en sekvens av valg og handlinger. Men før du gjør et valg, trenger du noe å sammenligne det med noe. Line - den mest rommelig, effektiv og praktisk algoritme kontroll mekanisme. Line - en variant av datapresentasjon. En data - dette er den viktigste gjenstand for "omsorg" av noen algoritme.

Ordinær logikk "comparison-action"

Generelt gjør dynamisk typing tunge ingen forskjeller i data, for eksempel PHP sammenligning linje og antallet er ikke mye annerledes. Nummer - det er også en streng, når den bare inneholder tall, punkt, og det er ikke et enkelt tegn som ikke brukes for å representere tallene i en hvilken som helst form (matematisk notasjon).

Hvis kontenkatsii antall fusjonerer automatisk med linjen, ingen spørsmål og ingen skjulte feil, gir selv om getType () -funksjonen den 'heltall' eller 'dobbel'.

Det er imidlertid en forskjell mellom å bruke is_int () og is_numeric (). Den første gir sannheten, bare når parameteren er et helt tall, andre, når et hvilket som helst tall eller tallstreng (variabel type er 'streng', men omfatter alle gitt matematisk notasjon).

Dette er et enkelt eksempel - et godt eksempel på hvordan en PHP streng sammenligningsoperatorer ( '==' '===' ... '='!) Kan presentere mange overraskelser. Variablene kan endre typen, de er ikke alltid tall, men nesten alltid de kan føre til linjen. I et ekstremt tilfelle - det vil være en tom streng.

Basert på ovennevnte, er en PHP streng sammenligning funksjon mest populære. Hva du skal velge, å avgjøre utbygger. Mange alternativer tilgjengelig opp til regulære uttrykk.

Grensene for de tilgjengelige funksjons

PHP-sammenligning av de to radene er bra "gjøre" funksjons strpos () - den billigste, den trofaste og praktisk alternativ. Hvis resultatet av funksjonsnummer, deretter helt klart en streng er lik en annen, eller en del til en annen.

Radikalt motsatte, men også helt riktig tilnærming - bruk av regulære uttrykk.

Hvis funksjonen $ cresult = scCheckFileName ($ CSTR) gir 'ekte', så linjen er navnet på filen vordovsky. Han vil bare ha en mulighet for utvidelse '.docx' og ingen tegn i navnet: kun bokstaver, tall og tegnene '_', '-'.

Funksjonen kan enkelt konverteres til andre typer filer: $ cPtr = '/^([a-zA-Z...0-9\-\_]{4,239})\.(html|js|css|png|jpg | docx | txt) {1} $ / u'. Denne variant utvider området avsøkningslinje lastes ned (f.eks, er PHP streng sammenligning anvendt "for å laste opp filer til en tjener, uten sjanse til inngangs error") for html, js, css, ...

Bruke strpos () og preg_match () - ytterpunktene. De er ikke direkte relatert til spørsmålet om sammenligningsperioden. Men spørsmålet om algoritmen - er et spørsmål om å bruke en kombinasjon av stil, til bruk av alle muligheter oppnå en pålitelig og korrekt resultat.

Funksjonell PHP: streng sammenligning

Arsenal språk sammenlignet strenger - en ren, ikke bare sammenligningen funksjon, men også en kombinasjon av et søk eller erstatning direkte. Ikke alltid handle må sammenfalle med den sammenligningen, siden sistnevnte ikke nødvendigvis føre til en endring i en rad. Ofte må du velge den ene eller den andre grenen av algoritmen.

Normal variant PHP: utfører strengsammenligning funksjon int strcmp (S1, S2).

Resultatet av funksjonen:

  • 0 - linje er lik;
  • -1 - den første strengen er mindre enn det andre;
  • 1 - den første mer enn den andre raden.

I praksis betyr dette at en del av den første raden til den andre, fra hvilken PHP-funksjonen (sammenligning rader) bestemmer. En mer begrenset versjon av strpos (), fordi i det siste tilfelle er det mulig å vite posisjonen til oppføringen.

strcmp () -funksjonen - sensitive. Hvis du ønsker å sammenligne strengen-ufølsomme, PHP tilbyr sine strcasecmp (). Syntaksen er lik.

I praksis ofte nødvendig å arbeide ikke med hele linjen, men bare en del av det. For dette sett av funksjoner PHP (streng sammenligning) inkludert strncmp (s1, s2, N). Den tredje parameteren angir utføre sammenligningen bare N-bytes. Resultatet er lik strcmp ().

Arrays, strykere og sammenligne

Disse er nesten alltid representert ved strenger. Hvis vi ser på arrays, objekter, eller datastrukturer, det er bare forskjellige varianter av kombinasjoner av en enkel streng strukturer.

Streng rekker og rader kan tilveiebringes på en komplementær måte. Transformasjon av matrisen til en streng funksjon implodere (matrise, symbol), for eksempel: $ margins1 = implodere ( '', $ stil-> getInnerMargin ()); ... algoritmen / brukeren ...; $ Margins2 = implode ( '', $ stil-> getInnerMargin ()) kan du flette alt av objektet posisjon i strengen stilling.

Du kan deretter utføre PHP streng sammenligning, og på et tidspunkt: $ check = strcmp ($ margins1, $ margins2) og sørge for at algoritmen eller brukeren at noe har endret seg (eller ikke). Hvis du utfører en sammenligning på vanlig måte, må du sortere array-elementer. Det tar lengre tid og er mer komplisert.

Objekter og linje

Enda mer spektakulært bruk PHP (string sammenligninger) kan implementeres via objektorienterte ideer.

Den moderne ideen om anleggene tyder på at de har egenskaper og metoder. Den tidligere er vanligvis representert med tall, strenger, tabeller og andre objekter. Sistnevnte inkluderer ofte opptaksteknikker (satt) i gjenvinningslinje og fra linje (få).

I motsetning til arrays, gjør objektet arbeidet med sine egne egenskaper og samhandler med andre objekter. Object "kompetent", der dens egenskaper er av reell verdi for algoritmen av programmet som helhet.

Dette øyeblikket gir grunnlag og mulighet til å ta opp når du spiller inn en streng kun nødvendig informasjon, og i utvinningen av linjen for å gjenopprette alle jobber eiendommer i ønsket tilstand. Vanligvis, i hvilket som helst objekt det er betydelig informasjon og fungerer (tid). Gjennomføringen av denne ideen kan du ikke bare spare minne, diskplass, databasen posten, men også gjør det mulig å sammenligne linjene enklere og mer nøyaktig måte.

Syntaks og semantikk

PHP utvikler dynamisk, og dens funksjonalitet både når det gjelder å sammenligne strenger og stadig forbedret i forhold til deres behandling. Men ingenting som hindrer en utvikler å flytte tyngdepunktet i området av semantikk.

Utvilsomt er funksjonaliteten god, men bruken kan overføres i betydningen av koden i objekter. Når algoritmen er presentert som et system av samspill mellom objekter, ser det mye bedre enn de sekvenssammenligninger og handlinger i direkte rekkefølge, klassisk stil.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 no.unansea.com. Theme powered by WordPress.