muzruno.com

Практика PHP: сравняване на низове

PHP е доста добър в обработката на информация. Синтаксисът на езика се представя от пълен набор от функции за сравнение, обработка на низове, оператори за сравняване.

php низ сравнение

Всеки алгоритъм е поредица от избори и действия. Но преди да направите избор, трябва да сравните нещо с нещо. Струни - най-големият, ефективен и практичен механизъм за управление на алгоритъма. Линии - вариант на представяне на данни. И данните са основният предмет на "грижа" за всеки алгоритъм.

Обичайната логика на "сравнение-действие"

Като цяло езикът динамично типизиране не прави специални разлики в данните, например в PHP, сравнението на низ и число не е много по-различно. Номерът също е низ, когато съдържа само цифри, период и няма нито един знак, който не се използва за представяне на число в нито една от неговите форми (математическа нотация).

В случай на номериране числото автоматично се слива с низа без допълнителни въпроси и без скрити грешки, дори ако функцията gettype () дава "integer" или "double".

php сравнение на две струни

Има обаче разлика между използването на is_int () и is_numeric (). Първият дава истината, само когато параметърът е цяло число, второ, когато всяко число или числов низ (тип променлива е "низ", но включва всички условие математически нотация).

Този прост пример е добър пример, тъй като операторите за сравняване на низове в PHP (`==`, `==`, `! =`, ...) могат да дадат много изненади. Променливите могат да променят техния тип, те не винаги са числа, но почти винаги могат да доведат до низ. В краен случай това ще бъде празен низ.

php оператори за сравняване на низове

Въз основа на горното, в PHP функцията за сравняване на низове е най-популярната. Кой да избере, за да разреши разработчика. Има много опции до регулярни изрази.

Граници на наличната функционалност

PHP-сравнението на две струни е добре "извършено" от функцията strpos () - най-евтиният, правилен и практичен вариант. Ако Резултатът от това функцията е число, тогава уникално един ред е равен на другия или един влиза в друг.

Кардинално противоположният, но и абсолютно правилен подход е използването на регулярни изрази.

Примерът на автора не е картина

Ако обаждането до $ cResult = scCheckFileName ($ cStr) дава "true", тогава низът е името на файла vord. Той ще има само едно разширение на ".docx" и никакви символи в името: само букви, цифри и знаци "_", ";".

Функцията може лесно да се превърне в други видове файлове: $ cPtr = `/^([a-zA-Z...0-9-_]{4,239}).(html|js|css|png|jpg | docx | txt) {1} $ / u `. Този вариант се простира гама линия на сканиране свалящ се на (например сравнение на низ се прилага ", за да качвате файлове на сървъра, без шанс за вход грешка") за HTML, JS, CSS, ...

Използването на strpos () и preg_match () е крайно. Те не са пряко свързани с въпроса за сравнението на времето. Но въпросът на алгоритъма е въпросът за прилагането на комбинация от стилове, използвайки всички възможности за постигане на надежден и точен резултат.

Функционален PHP: сравняване на низове

Арсенал на езика срещу струните не е само функция на чисто сравнение, а комбинация с пряко търсене или замяна. Не винаги действието трябва да съвпадне със сравнението, тъй като последното не води непременно до промяна в никой ред. Често е необходимо да изберете един или друг клон на алгоритъма.



Обичайната версия на PHP: сравнението на низовете се изпълнява от функцията int strcmp (s1, s2).

Функция Резултат:

  • 0 - линиите са равни;
  • -1 - първият ред е по-малък от втория;
  • 1 - първият ред е по-голям от втория.

На практика това означава, че първата линия навлиза в втората линия, от която се решава функцията PHP (сравняване на низове). По-ограничена версия на strpos (), защото в последния случай можете да знаете входната позиция.

Функцията strcmp () е чувствителна към буквите. Ако искате да сравнявате низовете без чувствителност на казусите, PHP предлага използването на strcasecmp (). Синтаксисът е подобен.

На практика често се изисква да работи не с цялата линия, а само със своята част. За това strncmp (s1, s2, N) е включен в комплекта PHP функции (сравняване на низове). Третият параметър показва, че се сравняват само N-байтове. Резултатът е подобен на strcmp ().

Масиви, струни и сравнения

Данните почти винаги са представени от низове. Ако разгледаме масиви, обекти или информационни структури, това са просто различни варианти на комбинация от по-прости струнни структури.

php низа сравнение функция

Струнните масиви и струните могат да бъдат представени в допълващ се начин. Трансформация на масива в низ функция спуквам а (масив, символ), например: $ margins1 = спуквам ( `,`, $ стил-> getInnerMargin ()) - ... на алгоритъм / потребителят ...- $ margins2 = спуквам ( " `, $ стил-> getInnerMargin ()) ви позволява да обедините всички позицията на обект в позиция на низ.

След това можете да извършвате сравнение на низ, и в даден момент: $ проверка = strcmp ($ margins1, $ margins2) и се уверете, че алгоритъмът или на потребителя, че нещо се е променило (или не). Ако извършите сравнение по обичайния начин, ще трябва да подреди масив елементи. Това отнема повече време и изглежда по-тромаво.

Обекти и струни

Дори по-ефективното използване на PHP (сравняване на низове) може да се осъществи чрез обективно ориентирани идеи.

Съвременната идея за обектите предполага наличието на техните свойства и методи. Първите са обикновено представени с числа, низове, масиви и други обекти. Втората често включва методите за писане (поставяне) на низ и възстановяване от низ (get).

За разлика от масиви, обект изпълнява работа с неговите свойства и взаимодейства с други обекти. Обектът е "компетентен" в това, което неговите свойства имат реална стойност за алгоритъма, програмата като цяло.

php низ сравнение

Този момент дава основа и възможността при записването да се фиксира в ред само необходимата информация, а при възстановяване от линия да се възстановят всички работни свойства в необходимото състояние. Обикновено във всеки обект има важна и работеща информация (временна). Изпълнението на тази идея ви позволява да запазвате не само паметта, дисковото пространство, записите в базата данни, но също така ви позволява да сравнявате струните по по-прост и точен начин.

Синтаксис и семантика

PHP динамично се развива и неговата функционалност както по отношение на сравняването на струните, така и по отношение на тяхната обработка постоянно се подобрява. Нищо обаче не възпрепятства разработчика да прехвърли центъра на тежестта в областта на семантиката.

Несъмнено функционалността е добра, но нейното използване може да бъде прехвърлено в семантичната част на кода в обекти. Когато алгоритъмът е представен като система на взаимодействие на обекти, той изглежда много по-добре от последователност от сравнения и действия в директен сериен, класически стил.

Споделяне в социалните мрежи:

сроден