DatorerProgrammering

PHP Practice: strängjämförelse

PHP är inriktad på god informationshantering. Syntaxen av språket representeras fullt funktionell uppsättning av jämförelsefunktioner, sträng bearbetning, jämförelseoperatorer.

Varje algoritm - en sekvens av val och handlingar. Men innan du gör ett val, måste du något att jämföra det med något. Line - den mest rymlig, effektivt och praktiskt algoritm kontrollmekanism. Line - en variant av datapresentation. En data - detta är huvudämnet för "vård" av någon algoritm.

Vanlig logik "jämförelse-action"

I allmänhet dynamisk typning tungan gör inga skillnader i data, såsom PHP jämförelse linje och antalet är inte mycket annorlunda. Number - det är också en sträng, när den innehåller bara siffror, punkt och det finns inte ett enda tecken som inte används för att representera tal i någon form (matematisk notation).

Om kontenkatsii nummer går samman automatiskt med linjen, inga frågor och inga dolda fel, ger även om getType () funktionen 'heltal' eller 'dubbel'.

Emellertid, det finns en skillnad mellan att använda is_int () och is_numeric (). Det första ger sanningen, endast när parametern är ett heltal, för det andra, när som helst antal eller numerisk sträng (variabel typ är 'sträng', utan innefattar alla försedda matematisk notation).

Detta är ett enkelt exempel - ett bra exempel på hur en PHP strängjämförelse operatörer (== ' '===' ... '='!) Kan presentera många överraskningar. Variablerna kan ändra sin typ, de är inte alltid siffror, men nästan alltid de kan leda till linjen. I ett extremfall - det kommer att bli en tom sträng.

Baserat på ovanstående, är ett PHP strängjämförelse funktion mest populära. Vad exakt att välja, att avgöra utvecklaren. Massor av alternativ till reguljära uttryck.

Gränserna för den tillgängliga funktionella

PHP-jämförelse mellan de två raderna är bra "göra" funktions strpos () - det billigaste, de troende och praktiskt alternativ. Om resultatet av funktionsnummer, då uppenbarligen en sträng är lika med en annan eller en del till en annan.

Radikalt motsatta, men också helt rätt strategi - att använda reguljära uttryck.

Om funktionen $ cResult = scCheckFileName ($ CSTR) ger 'sant', då linjen är namnet på filen vordovsky. Han kommer att ha endast ett alternativ expansion '.docx' och inga tecken i namn: endast bokstäver, siffror och tecknen '_', '-'.

Funktionen kan lätt omvandlas till andra typer av filer: $ cPtr = '/^([a-zA-Z...0-9\-\_]{4,239})\.(html|js|css|png|jpg | docx | txt) {1} $ / u'. Denna variant utökar sveplinjen nedladdningsbara (t.ex. är PHP strängjämförelse tillämpas "för att ladda upp filer till en server med någon chans att inmatningsfel") för html, js, css, ...

Använda strpos () och preg_match () - ytterligheter. De är inte direkt relaterade till frågan om jämförelseperioden. Men frågan om algoritmen - är en fråga om att använda en kombination av stil, att utnyttja alla möjligheter att uppnå en tillförlitlig och korrekt resultat.

Funktionell PHP: strängjämförelse

Arsenal språk jämfört strängar - en ren, inte bara jämförelsen funktion, men också en kombination av en sökning eller substitut direkt. Inte alltid agera måste sammanfalla med jämförelsen, eftersom den senare inte nödvändigtvis leder till en förändring i varje rad. Ofta måste man välja det ena eller det andra grenen av algoritmen.

Normal variant PHP: utför strängjämförelse funktion int strcmp (s1, s2).

Resultatet av funktionen:

  • 0 - linjen är lika;
  • -1 - den första strängen är mindre än den andra;
  • 1 - den första mer än den andra raden.

I praktiken innebär detta att en del av den första raden till den andra, från vilken PHP-funktionen (jämförelse rader) beslutar. En mer begränsad version av strpos (), eftersom det i det senare fallet är det möjligt att veta positionen för posten.

strcmp () -funktionen - känsliga. Om du vill jämföra strängen okänsliga, PHP erbjuder sina strcasecmp (). Syntaxen är liknande.

I praktiken ofta krävs för att arbeta inte med hela linjen, men bara en del av det. För denna uppsättning av funktioner PHP (strängjämförelse) inkluderade strncmp (s1, s2, N). Den tredje parametern anger utföra jämförelsen endast N-byte. Resultatet är liknande strcmp ().

Arrayer, strängar och jämföra

Dessa är nästan alltid representeras av strängar. Om vi betraktar de arrayer, objekt eller datastrukturer, det är bara olika varianter av kombinationer av en enkel sträng strukturer.

Sträng arrayer och rader kan vara anordnade på ett komplementärt sätt. Transformation av arrayen till en sträng funktion implodera (matris, symbol), exempelvis: $ margins1 = implodera ( '', $ stil-> getInnerMargin ()); ... algoritmen / användaren ...; $ Margins2 = implodera ( '', $ stil-> getInnerMargin ()) kan du slå samman alla objektposition i strängen position.

Du kan sedan utföra strängjämförelse PHP, och vid en tidpunkt: $ check = strcmp ($ margins1, $ margins2) och se till att algoritmen eller användaren om att något har ändrats (eller inte). Om du gör en jämförelse på det vanliga sättet, måste du sortera arrayelementen. Det tar längre tid och är mer komplicerat.

Föremål och linje

Ännu mer spektakulär användning PHP (strängjämförelser) kan genomföras via objektorienterade idéer.

Den moderna uppfattning om anläggningar tyder på att de har egenskaper och metoder. De förstnämnda är vanligen representeras av tal, strängar, arrayer och andra föremål. Det senare innehåller ofta inspelningsteknik (sätta) i återställningslinjen och från linjen (få).

Till skillnad från matriser, gör objektet arbetet med sina egna egenskaper och interagerar med andra objekt. Object "behörig", där dess egenskaper är av verkligt värde för algoritmen i programmet som helhet.

Detta ögonblick ger underlag och möjlighet att spela in när du spelar in en sträng endast nödvändig information, och återvinning av linjen för att återställa alla arbets egenskaper i det önskade tillståndet. Vanligtvis i något föremål finns saklig information och arbeta (tid). Genomförandet av denna idé kan du spara inte bara minne, diskutrymme, databasposten, utan också gör det möjligt att jämföra raderna enklare och mer exakt sätt.

Syntax och semantik

PHP utvecklas dynamiskt och dess funktionalitet både när det gäller att jämföra strängar och ständigt förbättras när det gäller deras behandling. Men inget som hindrar en utvecklare att flytta tyngdpunkten inom semantik.

Otvivelaktigt är funktionaliteten bra, men dess användning kan överföras i betydelsen av koden i objekt. När algoritmen presenteras som ett system av interaktion mellan objekt, ser det mycket bättre än sekvensjämförelser och åtgärder i direkt följd, en klassisk stil.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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