PHP is goed gericht op informatieverwerking. De syntaxis van de taal wordt weergegeven door een complete set vergelijkingsfuncties, stringverwerking en vergelijkingsoperatoren.
Elk algoritme is een reeks keuzes enactie. Maar voordat u een keuze maakt, moet u iets met iets vergelijken. Strings zijn het meest uitgebreide, efficiënte en praktische mechanisme om het algoritme te besturen. Strings zijn een variant van datapresentatie. En gegevens zijn de belangrijkste "zorg" van elk algoritme.
Conventionele vergelijkingsactielogica
Over het algemeen is een dynamische typetaal dat nietmaakt speciale verschillen in gegevens, bijvoorbeeld in PHP is de vergelijking van een string en een getal niet veel verschillend. Een getal is ook een tekenreeks, als het alleen cijfers bevat, een punt, en er is geen enkel teken dat niet wordt gebruikt om een getal in een van zijn vormen weer te geven (wiskundige notatie).
In het geval van inhoud wordt het nummer automatisch samengevoegd met de string zonder onnodige vragen en zonder verborgen fouten, zelfs als de functie gettype () "integer" of "double" geeft.
Er is echter een verschil tussen het gebruik van de functieis_int () en is_numeric (). De eerste is waar als de parameter alleen een geheel getal is, de tweede als het een willekeurig getal of een numerieke tekenreeks is (de variabele is van het type "string", maar bevat alles dat wordt geleverd door wiskundige notatie).
Dit eenvoudige voorbeeld is een goed voorbeeld, net als in PHPstringvergelijkingsoperatoren ("==", "===", "! =", ...) kunnen u veel verrassingen bezorgen. Variabelen kunnen van type veranderen, het zijn niet altijd getallen, maar ze kunnen bijna altijd in een string worden omgezet. Als laatste redmiddel zal het een lege string zijn.
Op basis hiervan is de functie voor stringvergelijking van PHP het populairst. Welke je moet kiezen, is aan de ontwikkelaar. Er zijn talloze opties beschikbaar tot reguliere expressies.
De grenzen van de beschikbare functionaliteit
PHP die twee strings vergelijkt "doet" de functie goedstrpos () is de goedkoopste, zekerste en meest praktische optie. Als het resultaat van deze functie een getal is, is de ene string uniek gelijk aan de andere, of is er een in een andere.
Een radicaal tegenovergestelde, maar ook absoluut correcte benadering is het gebruik van reguliere expressies.
Als de functie $ cResult =scCheckFileName ($ cStr) zal "true" geven, wat betekent dat de string de naam is van het Word-bestand. Het heeft slechts één variant van de ".docx" extensie en geen karakters in de naam: alleen letters, cijfers en tekens "_", "-".
De functie kan eenvoudig worden geconverteerd naar anderesoorten bestanden: $ cPtr = "/ ^ ([a-zA-Z ... 0-9 -_> [4.239]]) u". Deze optie om de string te controleren, vergroot het bereik van de geüploade (in PHP wordt bijvoorbeeld stringvergelijking toegepast "om bestanden naar de server te uploaden, zonder enige kans op een invoerfout") naar html, js, css, ...
Met behulp van strpos () en preg_match () -extremen. Ze houden niet direct verband met de kwestie van termenvergelijking. Maar de vraag van het algoritme is een kwestie van het toepassen van een combinatie van stijlen, waarbij alle mogelijkheden worden gebruikt om tot een betrouwbaar en correct resultaat te komen.
PHP-functionaliteit: stringvergelijking
Arsenaal van taal versus strijkers is niet alleenpure vergelijkingsfuncties, maar ook een combinatie met direct zoeken of vervangen. De handeling hoeft niet altijd hetzelfde te zijn als de vergelijking, aangezien deze laatste niet noodzakelijkerwijs tot een wijziging in een rij leidt. Het is vaak nodig om een of andere tak van het algoritme te selecteren.
De gebruikelijke PHP-versie: stringvergelijking wordt uitgevoerd door de functie int strcmp (s1, s2).
Functie resultaat:
- 0 - strings zijn gelijk;
- -1 - de eerste regel is kleiner dan de tweede;
- 1 - de eerste regel is groter dan de tweede.
In de praktijk betekent dit dat de eerstestring in de tweede, van waaruit de PHP-functie (stringvergelijking) een beslissing neemt. Een beperktere versie van strpos (), aangezien u in het laatste geval de positie van het voorkomen kunt weten.
De functie strcmp () is hoofdlettergevoelig. Als je strings moet vergelijken op een niet hoofdlettergevoelige manier, stelt PHP voor om strcasecmp () te gebruiken. De syntaxis is hetzelfde.
In de praktijk is het vaak nodig om niet met iedereen te werkenstring, maar alleen met een deel ervan. Hiervoor bevat de PHP-functieset (stringvergelijking) strncmp (s1, s2, N). De derde parameter geeft opdracht om de vergelijking alleen N-bytes uit te voeren. Het resultaat is hetzelfde als strcmp ().
Arrays, strings en vergelijking
Gegevens worden bijna altijd weergegeven als tekenreeksen. Als we arrays, objecten of informatiestructuren beschouwen, dan zijn dit gewoon verschillende combinaties van eenvoudigere stringstructuren.
String-arrays en strings kunnencomplementair gepresenteerd. Een array omzetten in een string met behulp van de implode (array, symbol) functie, bijvoorbeeld: $ margins1 = implode (",", $ style-> getInnerMargin ()); ... werking van het algoritme / gebruiker ...; $ margins2 = implode (",", $ style-> getInnerMargin ()) stelt je in staat om alle objectposities samen te voegen tot een positiereeks.
U kunt dan PHP-stringvergelijking uitvoeren en inonce: $ check = strcmp ($ margins1, $ margins2) en controleer of het algoritme of de gebruiker iets heeft veranderd (of niet). Als u de vergelijking op de gebruikelijke manier uitvoert, moet u de array-elementen herhalen. Het duurt langer en ziet er omslachtiger uit.
Objecten en snaren
Een nog spectaculairder gebruik van PHP (stringvergelijking) kan worden gerealiseerd door objectgeoriënteerde ideeën.
Modern begrip van objectenveronderstelt dat ze eigenschappen en methoden hebben. De eerste worden meestal weergegeven door getallen, tekenreeksen, arrays en andere objecten. De laatste bevatten vaak methoden voor het schrijven (put) naar een string en het herstellen van een string (get).
In tegenstelling tot arrays werkt een object welzijn eigenschappen en interageert met andere objecten. Het object is "bekwaam" in wat de eigenschappen ervan echte betekenis hebben voor het algoritme, het programma als geheel.
Dit moment biedt een basis en een kans voorrecords om alleen de benodigde informatie in de string op te nemen, en bij het herstellen van de string alle werkende eigenschappen terugzetten naar de gewenste staat. Gewoonlijk is er in elk object informatie essentieel en werkend (tijdelijk). De implementatie van dit idee stelt u in staat om niet alleen geheugen, schijfruimte en databaserecords te besparen, maar maakt het ook mogelijk om strings te vergelijken met eenvoudigere en nauwkeurigere middelen.
Syntaxis en semantiek
PHP ontwikkelt zich dynamisch en de functionaliteit zit er zowel inzowel in termen van stringvergelijking als in termen van hun verwerking wordt voortdurend verbeterd. Niets belet de ontwikkelaar echter om het zwaartepunt te verschuiven naar het gebied van de semantiek.
De functionaliteit is ongetwijfeld goed, maar het isgebruik kan worden overgedragen naar het semantische deel van de code, naar objecten. Wanneer een algoritme wordt gepresenteerd als een systeem van objectinteractie, ziet het er veel beter uit dan een reeks vergelijkingen en acties in een rechttoe rechtaan opeenvolgende, klassieke stijl.