/ / Praktyka PHP: Porównanie ciągów

Praktyka PHP: Porównanie ciągów

PHP jest całkiem dobry w przetwarzaniu informacji. Składnia języka jest reprezentowana przez kompletny zestaw funkcji do porównywania, przetwarzania ciągów i operatorów porównania.

Porównanie ciągów php

Każdy algorytm jest sekwencją wyborów iakcja. Ale zanim dokonasz wyboru, musisz coś z czymś porównać. Ciągi są najbardziej pojemnym, wydajnym i praktycznym mechanizmem sterowania algorytmem. Rzędy - wariant reprezentacji danych. A dane są głównym przedmiotem „obaw” każdego algorytmu.

Konwencjonalna logika działania porównania

Ogólnie rzecz biorąc, dynamiczny język pisania nie jestwprowadza specjalne różnice w danych, na przykład w PHP porównanie ciągu i liczby niewiele się różni. Liczba jest również łańcuchem, gdy zawiera tylko liczby, punkt i nie ma ani jednego znaku, który nie byłby używany do reprezentowania liczby w żadnej z jej form (notacja matematyczna).

W przypadku treści liczba jest automatycznie łączona z łańcuchem bez zbędnych pytań i żadnych ukrytych błędów, nawet jeśli funkcja gettype () podaje „integer” lub „double”.

php porównuje dwa łańcuchy

Istnieje jednak różnica między używaniem tej funkcjiis_int () i is_numeric (). Pierwsza jest prawdziwa, gdy parametr jest tylko liczbą całkowitą, druga, gdy jest liczbą lub ciągiem liczbowym (zmienna jest typu „string”, ale zawiera wszystko, co jest dostarczane przez notację matematyczną).

Ten prosty przykład jest dobrym przykładem, jak w PHPOperatory porównania ciągów ("==", "===", "! =", ...) mogą przynieść wiele niespodzianek. Zmienne mogą zmieniać swój typ, nie zawsze są liczbami, ale prawie zawsze można je przekształcić w ciąg. W ostateczności będzie to pusty ciąg.

operatory porównania ciągów php

Na tej podstawie funkcja porównywania ciągów w PHP jest zdecydowanie najpopularniejsza. Wybór należy do programisty. Dostępnych jest mnóstwo opcji, aż do wyrażeń regularnych.

Granice dostępnej funkcjonalności

PHP porównując dwa łańcuchy "robi" dobrze tę funkcjęstrpos () jest najtańszą, najpewniejszą i najbardziej praktyczną opcją. Jeśli wynikiem tej funkcji jest liczba, to jeden ciąg jest jednoznacznie równy drugiemu lub jeden jest zawarty w innym.

Radykalnie odwrotnym, ale również absolutnie poprawnym podejściem jest użycie wyrażeń regularnych.

Przykład autora nie jest obrazem

Jeśli funkcja wywoła $ cResult =scCheckFileName ($ cStr) zwróci wartość „true”, co oznacza, że ​​ciąg jest nazwą pliku Worda. Będzie mieć tylko jeden wariant rozszerzenia „.docx” i żadnych znaków w nazwie: tylko litery, cyfry i znaki „_”, „-”.

Funkcję można łatwo przekonwertować na innąrodzaje plików: $ cPtr = "/ ^ ([a-zA-Z ... 0-9 -_> [4,239]]). (html | js | css | png | jpg | docx | txt) [1] ] $$ / u ”. Ta opcja sprawdzenia ciągu rozszerza zakres przesłanych (na przykład w PHP porównanie ciągów jest stosowane „w celu przesłania plików na serwer, bez najmniejszej szansy na błąd wejściowy”) do html, js, css, ...

Używanie strpos () i preg_match () -skrajności. Nie są bezpośrednio związane z kwestią porównywania terminów. Ale kwestia algorytmu to kwestia zastosowania kombinacji stylów, wykorzystania wszystkich możliwości, aby osiągnąć wiarygodny i poprawny wynik.

Funkcjonalność PHP: porównanie ciągów

Arsenał języka kontra smyczki to nie tylkoczyste funkcje porównawcze, ale także kombinacja bezpośrednio znajdź lub zamień. Akcja nie zawsze musi pokrywać się z porównaniem, ponieważ to drugie niekoniecznie prowadzi do zmiany w jakimkolwiek rzędzie. Często konieczne jest wybranie jednej lub drugiej gałęzi algorytmu.

Zwykła wersja PHP: porównanie łańcuchów jest wykonywane przez funkcję int strcmp (s1, s2).

Wynik funkcji:

  • 0 - ciągi są równe;
  • -1 - pierwsza linia jest mniejsza niż druga;
  • 1 - pierwsza linia jest większa niż druga.

W praktyce oznacza to, że wchodzi pierwszyciąg do drugiego, na podstawie którego funkcja PHP (porównanie ciągów) podejmuje decyzję. Bardziej ograniczona wersja strpos (), ponieważ w tym drugim przypadku możesz poznać miejsce wystąpienia.

Funkcja strcmp () rozróżnia wielkość liter. Jeśli potrzebujesz porównać łańcuchy bez uwzględniania wielkości liter, PHP sugeruje użycie strcasecmp (). Składnia jest taka sama.

W praktyce często wymagana jest praca nie ze wszystkimisznurek, ale tylko z jego częścią. Aby to zrobić, zestaw funkcji PHP (porównanie ciągów) zawiera strncmp (s1, s2, N). Trzeci parametr nakazuje wykonanie porównania tylko z N-bajtami. Wynik jest taki sam, jak strcmp ().

Tablice, łańcuchy i porównanie

Dane są prawie zawsze reprezentowane jako ciągi. Jeśli weźmiemy pod uwagę tablice, obiekty lub struktury informacyjne, to są to po prostu różne kombinacje prostszych struktur łańcuchowych.

Funkcja porównywania ciągów php

Tablice i ciągi znaków mogą byćprzedstawione w sposób komplementarny. Przekształcenie tablicy w łańcuch przy użyciu funkcji implode (tablica, symbol), na przykład: $ margins1 = implode (",", $ style-> getInnerMargin ()); ... praca algorytmu / użytkownika ...; $ margins2 = implode (",", $ style-> getInnerMargin ()) umożliwia połączenie wszystkich pozycji obiektów w łańcuch pozycji.

Następnie możesz zrobić porównanie ciągów PHP i wraz: $ check = strcmp ($ margins1, $ margins2) i sprawdź, czy algorytm lub użytkownik coś zmienił (czy nie). Jeśli wykonujesz porównanie w zwykły sposób, będziesz musiał iterować po elementach tablic. Trwa to dłużej i wygląda na bardziej uciążliwe.

Obiekty i łańcuchy

Jeszcze bardziej spektakularne wykorzystanie PHP (porównywanie ciągów znaków) można zrealizować dzięki pomysłom zorientowanym obiektowo.

Współczesne rozumienie przedmiotówzakłada, że ​​mają właściwości i metody. Te pierwsze są zwykle reprezentowane przez liczby, ciągi znaków, tablice i inne obiekty. Te ostatnie często obejmują metody zapisywania (wstawiania) do łańcucha i odtwarzania z łańcucha (get).

W przeciwieństwie do tablic, obiekt działa zjego właściwości i współdziała z innymi obiektami. Obiekt jest „kompetentny” w tym, jakie jego właściwości mają rzeczywiste znaczenie dla algorytmu, programu jako całości.

Porównanie ciągów i liczb php

Ta chwila jest podstawą i okazją dozapisz tylko niezbędne informacje w ciągu, a podczas odtwarzania z łańcucha przywróć wszystkie właściwości robocze do pożądanego stanu. Zwykle w każdym obiekcie znajdują się informacje istotne i działające (tymczasowe). Realizacja tego pomysłu pozwala zaoszczędzić nie tylko pamięć, miejsce na dysku, rekordy bazy danych, ale także umożliwia porównywanie ciągów za pomocą prostszych i dokładniejszych środków.

Składnia i semantyka

PHP rozwija się dynamicznie, a jego funkcjonalność znajduje się zarówno wzarówno pod względem porównywania ciągów, jak i pod względem ich przetwarzania jest stale ulepszane. Jednak nic nie stoi na przeszkodzie, aby programiści przesunęli środek ciężkości na semantykę.

Niewątpliwie funkcjonalność jest dobra, ale jejużycie można przenieść na semantyczną część kodu, na obiekty. Kiedy algorytm jest przedstawiany jako system interakcji z obiektem, wygląda znacznie lepiej niż sekwencja porównań i działań w prostym, sekwencyjnym, klasycznym stylu.

Podobało mi się:
0
Popularne posty
Duchowy rozwój
Jedzenie
tak