PHP е добре фокусирана върху обработката на информация. Синтаксисът на езика се представя от пълен набор от функции за сравнение, обработка на низове, оператори за сравняване.
Всеки алгоритъм е поредица от избори идействия. Но преди да направите избор, трябва да сравните нещо с нещо. Струни - най-големият, ефективен и практичен механизъм за управление на алгоритъма. Струни - вариант на представяне на данните. И данните - това е основният предмет на "грижа" на всеки алгоритъм.
Нормална логика за сравнение
По принцип динамичният език за писане не е такъвправи специални разлики в данните, например в PHP сравнението на низа и числото не е много по-различно. Номерът също е низ, когато съдържа само числа, точка и няма нито един знак, който не се използва за представяне на число под каквато и да е форма (математическа нотация).
В случай на kontenkatsiya число автоматично се слива с низ без излишни въпроси и без скрити грешки, дори ако функцията gettype () дава "integer" или "double".
Има обаче разлика между използването на функциятаis_int () и is_numeric (). Първият е валиден, когато параметърът е само цяло число, а вторият - число или числен низ (променливата има тип "низ", но съдържа всичко, което се осигурява от математическа нотация).
Този прост пример е добър пример, както в PHP.оператори за сравняване на низове ("==", "===", "! =", ...) могат да дадат много изненади. Променливите могат да променят техния тип, те не винаги са числа, но почти винаги могат да бъдат предавани на низ. В крайния случай ще бъде празен низ.
Въз основа на това функцията за сравняване на низовете в PHP е най-популярна. Кой да избере, зависи от разработчика. Предлага се в различни опции до регулярни изрази.
Границите на наличната функционалност
PHP двулинейното сравнение прави добре "функцията"strpos () е най-евтиният, сигурен и практичен вариант. Ако резултатът от тази функция е число, то недвусмислено един ред е равен на друг или един принадлежи на друг.
Напълно противоположен, но и абсолютно правилен подход е използването на регулярни изрази.
Ако функцията позвъни $ cResult =scCheckFileName ($ cStr) ще даде "true", което означава, че низът е името на файла на Word. Ще има само една версия на разширението ".docx" и никакви символи в името: само букви, цифри и знаци "_", "-".
Функция легко может быть переделана на другие типове файлове: $ cPtr = "/^([-zA-Z...0-9-_ палмово A4.239}). (ERT11) u ". Тази опция за проверка на низовете разширява обхвата на изтеглящите се (например при PHP, сравнението на низовете се прилага "за качване на файлове на сървъра, без единична възможност за входна грешка") в html, js, css, ...
Използвайки strpos () и preg_match () -крайност. Те не са пряко свързани с въпроса за термина за сравнение. Но в края на краищата въпросът за алгоритъма е въпросът за прилагането на комбинация от стилове, като се използват всички възможности за постигане на надежден и точен резултат.
PHP функционалност: сравнение на низове
Арсенал на езика срещу струните е не самочисто сравнение функции, но също така и комбинация с директно търсене или замяна. Действието не винаги трябва да съвпада със сравнението, тъй като последното не води непременно до промяна в какъвто и да е ред. Често трябва да изберете един или друг клон на алгоритъма.
Обичайната версия на PHP: сравнение на низовете се изпълнява от функцията int strcmp (s1, s2).
Резултатът от функцията:
- 0 - линиите са равни;
- -1 - първият ред е по-малък от втория;
- 1 - първият ред е по-голям от втория.
На практика това означава влизане в първатавтората линия, от която се взема решение PHP функцията (сравняване на низове). По-ограничена версия на strpos (), тъй като в последния случай можете да знаете позицията на влизането.
Функцията strcmp () е чувствителна към буквите. Ако искате да сравнявате низовете с нечувствителен случай, PHP предлага да се използва strcasecmp (). Синтаксисът е подобен.
На практика често е необходимо да се работи не с цялоно само с неговата част. За да направите това, функцията PHP (сравняване на низове) включва strncmp (s1, s2, N). Третият параметър определя за сравнение само N-байтове. Резултатът е подобен на strcmp ().
Масиви, струни и сравнения
Данните почти винаги са представени от редове. Ако разгледаме масиви, обекти или информационни структури, това са просто различни варианти на комбинацията от по-прости струнни структури.
Низови масиви и низове могат да бъдатпредставени в допълващ начин. Преобразуване на масив в низ с помощта на функцията implode (масив, символ), например: $ margins1 = implode (",", $ style-> getInnerMargin ()); ... работа на алгоритъма / потребителя ...; $ margins2 = implode (",", $ style-> getInnerMargin ()) ви позволява да обедините всички позиции на обект в низ за позиция.
След това можете да направите сравнение на PHP низ и введнъж: $ check = strcmp ($ margins1, $ margins2) и проверете дали алгоритъмът или потребителят е променил нещо (или не). Ако извършите сравнението по обичайния начин, ще трябва да повторите елементите на масива. Това отнема повече време и изглежда по-тромаво.
Обекти и струни
Още по-зрелищното използване на PHP (сравняване на низове) може да се реализира чрез обектно-ориентирани идеи.
Съвременно разбиране на обектитепредполага, че имат свойства и методи. Първите обикновено са представени от числа, низове, масиви и други обекти. Последните често включват методи за писане (пускане) на низ и възстановяване от низ (get).
За разлика от масивите, обектът работисвойствата му и взаимодейства с други обекти. Обектът е "компетентен" в това, което неговите свойства имат реално значение за алгоритъма, програмата като цяло.
Този момент дава основа и възможност зазапишете само нужната информация в низ и при възстановяване от низ връщайте всички работни свойства до желаното състояние. Обикновено във всеки обект има съществена и работеща (временна) информация. Реализацията на тази идея ви позволява да спестите не само памет, дисково пространство, записи на база данни, но също така дава възможност да се сравняват низовете с по-прости и по-точни средства.
Синтаксис и семантика
PHP се развива динамично и функционалността му е и вкакто по отношение на сравнението на низовете, така и по отношение на обработката им непрекъснато се усъвършенства. Нищо обаче не пречи на програмиста да премести центъра на тежестта в областта на семантиката.
Безспорно функционалността е добра, но нейнатаизползване може да бъде прехвърлено в семантичната част на кода, към обекти. Когато един алгоритъм е представен като система от обектно взаимодействие, той изглежда много по-добре от последователност от сравнения и действия в прав последователен, класически стил.