Praktyka PHP: Porównanie linii

PHP jest dobrze ukierunkowane na przetwarzanie informacji. Składnia języka jest reprezentowana przez pełny zestaw funkcji porównania, przetwarzania linii i operatorów porównania.

Każdy algorytm to sekwencja wyborów i działań. Ale zanim dokonasz wyboru, musisz coś z czymś porównać. Linia jest najpotężniejszym, wydajnym i praktycznym mechanizmem zarządzania algorytmem. Linie to reprezentacja danych. Dane są głównym przedmiotem "zmartwień" dowolnego algorytmu.

Normalna logika "porównanie-działanie"

Ogólnie rzecz biorąc, język dynamicznego typowania nie powoduje żadnych szczególnych rozbieżności w danych, na przykład w PHP, porównanie ciągu znaków i liczby jest nieco inne. Liczba jest również ciągiem zawierającym tylko liczby, kropkę i brak znaku, który nie jest używany do reprezentowania liczby w dowolnej formie (notacja matematyczna).


W przypadku treści, numer automatu łączy się z linią bez zbędnych pytań i bez ukrytych błędów, nawet jeśli funkcja gettype () daje "całkowitą" lub "podwójną".
Istnieje jednak różnica między używaniem is_int () i is_numeric (). Pierwsza podaje prawdę, gdy parametr jest tylko liczbą całkowitą, a drugi, gdy występuje jakakolwiek liczba lub ciąg liczbowy (zmienna ma typ "ciąg", ale zawiera wszystko, co zawiera notacja matematyczna). Ten prosty przykład jest dobrym przykładem, jak w PHP, operatory porównania linii ('==', '===', '! =',) Mogą dać wiele niespodzianek. Zmienne mogą zmieniać ich typ, nie zawsze są liczbami, ale prawie zawsze mogą prowadzić do ciągu znaków. WW skrajnym przypadku będzie to pusta linia.


W oparciu o powyższe, w PHP najpopularniejsza jest funkcja porównywania linii. Co wybrać, zdecyduj się na programistę. Dostępnych jest wiele opcji do wyrażeń regularnych.

ograniczenia dostępnej funkcjonalnego porównania

PHP rzutu dwóch dobrych „sprawia, że ​​funkcja” strpos () - najtańsze, prawidłowy i praktyczne. Jeżeli w wyniku szeregu funkcji, to wyraźnie jeden wiersz do innego lub jednej części do drugiej. Kontrast kardynalny, ale także absolutnie poprawne podejście - użycie wyrażeń regularnych.
Jeśli wywołanie $ cResult = scCheckFileName ($ CStr) wygłosi 'true', stąd nazwa wiersz jest vordivskoho plików. To będzie tylko jedna wersja z rozszerzeniem „.docx” nie ma żadnych znaków w nazwie, tylko litery, cyfry i symbole «_», «-». Funkcję tę można łatwo zawrócić do innych typów plików: $ cPtr = „/^([a-zA-Z0-9-_]{4239}).(html|js|css|png|jpg|docx|txt){1 } $ /u '. Opcja ta sprawdza linia rozszerza zakres obciążenia (np porównaniu ciąg PHP używane „, aby przesłać pliki na serwer, bez szansy błędu wejściowego) w HTML, JS, CSS, użytkowania strpos () i preg_match () - ekstrema Mają. bezpośrednio związane z emisją okresu porównawczego Ale pytanie algorytmu - jest zastosowanie kombinacji stylów, wykorzystując wszystkie możliwości uzyskania wiarygodnych i poprawnych wyników

Funkcjonalne PHP.. porównanie string

w porównaniu Arsenal linie językowe - to nie tylko funkcja Porównanie ystoho, ale kombinacja wyszukiwania lub wymiany natychmiast. Brak działania powinny być zawsze takie samo porównanie,ponieważ ta ostatnia niekoniecznie prowadzi do zmiany jakiejkolwiek linii. Często trzeba wybrać jedną lub drugą gałąź algorytmu.
Zwykła wersja PHP: porównanie linii wykonywane jest przez funkcję int strcmp (s1 s2). Wynik funkcji:
  • 0 - linie równe;
  • -1 - pierwsza linia jest mniejsza niż druga;
  • 1 - pierwsza linia to więcej niż druga.
  • W praktyce oznacza to, że pierwsza linia znajduje się w drugiej, od której wchodzi funkcja PHP (porównanie linii). Bardziej ograniczona wersja strpos (), ponieważ w tym drugim przypadku możesz znać pozycję wejścia. W funkcji strcmp () rozróżniana jest wielkość liter. Jeśli chcesz porównać ciągi bez uwzględniania wielkości liter, PHP oferuje użycie funkcji strcasecmp (). Składnia jest podobna. W praktyce często trzeba pracować z całą linią, ale tylko z jej częścią. Aby to zrobić, zestaw funkcji PHP (porównanie łańcuchów) zawiera strncmp (s1 s2 N). Trzeci parametr wskazuje, że porównanie to tylko N-bajt. Wynik jest podobny do strcmp ().

    Tablice, wiersze i porównania

    Dane prawie zawsze są reprezentowane przez ciągi. Jeśli weźmiemy pod uwagę tablice, obiekty lub struktury informacyjne, to są to tylko różne warianty kombinacji prostszych struktur uderzeniowych.
    Liniowe tablice i rzędy można przedstawić w sposób komplementarny. Transformacja tablicy w łańcuch jest funkcją implode (tablica, symbol), na przykład: $ margins1 = implode (',', $ style- & gt; getInnerMargin ()); algorytm /praca użytkownika; $ margins2 = implode (',', $ style- & gt; getInnerMargin ()) umożliwia scalenie wszystkich pozycji obiektu w elemencie zamówienia. Następnie możesz wykonać porównanie linii PHP i naraz: $ check = strcmp ($ margins1 $ margins2) i upewnij się, że algorytm lubużytkownik zmienił coś (lub nie). Jeśli wykonujesz porównanie w zwykły sposób, musisz przewijać elementy tablicy. Wydłuża się to i wygląda na bardziej uciążliwe.

    Obiekty i łańcuchy

    Jeszcze bardziej spektakularne wykorzystanie języka PHP (porównywanie linii) można realizować za pomocą pomysłów obiektowych. Nowoczesny widok obiektów zakłada obecność ich właściwości i metod. Pierwsze są zwykle reprezentowane przez liczby, wiersze, tablice i inne obiekty. Drugi często zawiera metody zapisu (put) w łańcuchu znaków i przywracanie z linii (get).
    W przeciwieństwie do tablic, obiekt wykonuje swoją pracę z własnymi właściwościami i współdziała z innymi obiektami. Obiekt jest "kompetentny", ponieważ jego właściwości mają realną wartość dla algorytmu, programu jako całości.
    Ta chwila stanowi podstawę i możliwość zapisania rekordu w wierszu tylko niezbędnych informacji, a po przywróceniu z ciągu znaków przywrócenie wszystkich właściwości roboczych do pożądanego stanu. Zwykle w każdym obiekcie znajdują się istotne i działające (tymczasowe) informacje. Realizacja takiego pomysłu pozwala zaoszczędzić nie tylko pamięć, miejsce na dysku, rekordy bazy danych, ale także umożliwia porównywanie łańcuchów z prostszymi i bardziej dokładnymi środkami.

    Składnia i semantyka

    PHP dynamicznie ewoluuje, a jego funkcja zarówno pod względem porównania linii, jak i pod względem przetwarzania jest stale ulepszana. Nic nie stoi jednak na przeszkodzie, aby programista przesunął środek ciężkości w semantykę. Niewątpliwie dobry funkcjonalny, ale jego użycie można przenieść do części treści kodu,obiekty Kiedy algorytm jest reprezentowany jako system interakcji obiektowej, wygląda znacznie lepiej niż sekwencja porównań i działań w prostym, sekwencyjnym, klasycznym stylu.

    Powiązane publikacje