PHP prax: porovnanie línie

PHP je dobre zamerané na spracovanie informácií. Jazyková syntax predstavuje plnohodnotný súbor porovnávacích funkcií, spracovanie liniek a porovnávacie operátory.

Každý algoritmus je postupnosť volieb a akcií. Ale predtým, než sa rozhodnete, musíte niečo niečo porovnať. Riadok je najsilnejší, účinný a praktický mechanizmus na správu algoritmu. Lines predstavuje údaje. A dáta sú hlavným predmetom "starosti" akéhokoľvek algoritmu.

Normálna logika "porovnanie-akcia"

Vo všeobecnosti jazyk dynamického písania nevytvára žiadne zvláštne rozdiely v údajoch, napríklad v PHP, porovnanie reťazca a číslo je mierne odlišné. Číslo je tiež reťazec obsahujúci iba čísla, bodku a žiadny znak, ktorý sa nepoužíva na reprezentáciu čísla v akejkoľvek forme (matematická notácia).


V prípade obsahu sa číslo automatizácie spája s riadkom bez nadbytočných otázok a bez skrytých chýb, aj keď funkcia gettype () dáva "integer" alebo "double".
Existuje však rozdiel medzi používaním is_int () a is_numeric (). Prvý z nich udáva pravdu, keď parameter je iba celé číslo, druhá v prípade akéhokoľvek číselného alebo číselného reťazca (premenná má typ reťazca, ale obsahuje všetko, čo poskytuje matematická notácia). Tento jednoduchý príklad je dobrým príkladom, ako v PHP, operátori porovnávania liniek ('==', '===', '! =',) Môže poskytnúť veľa prekvapení. Premenné môžu zmeniť svoj typ, nie sú vždy čísla, ale takmer vždy môžu viesť k reťazci. vV extrémnom prípade to bude prázdny riadok.


Na základe vyššie uvedeného v PHP je funkcia porovnávania línií najpopulárnejšia. Čo si vybrať, rozhodnite sa pre vývojára. K regulárnym výrazom je k dispozícii veľa možností.

Obmedzenie dostupných funkčné porovnanie

PHP línie dvoch dobré "je" funkcia strpos () - najlacnejšie, pravú a praktickú možnosť. Ak je výsledkom tejto funkcie číslo, potom jedinečne jeden riadok je rovnaký ako druhý alebo jeden vstupuje iný. Hlavný kontrast, ale aj úplne správny prístup - používanie regulárnych výrazov.
V prípade, že volanie $ cResult = scCheckFileName ($ cstr) dá za 'pravdivé', a preto je rad sa volá vordivskoho súboru. Bude mať iba jednu možnosť rozšírenia ".docx" a žiadne znaky v názve: iba písmená, čísla a znaky _, '-'. Túto funkciu môžete ľahko recyklovať do iných typov súborov: $ cPtr =, /^([a-zA-Z0-9-_]{4239}).(html|js|css|png|jpg|docx|txt){1 } $ /u '. Táto voľba kontroluje linka rozširuje rozsah zaťaženia (napr PHP porovnávanie reťazcov používaného "nahrať súbory na server, bez možnosťou vstupu chyby) v html, js, css, použite strpos () a preg_match () - extrémy majú. priamo súvisí s otázkou doby nákupný Ale otázka algoritmu - je použitie kombinácie štýlov, s využitím všetkých možností, aby sa dosiahlo spoľahlivé a správne výsledky

funkčné PHP: .. porovnaní string

v porovnaní Arsenal jazykovej linky - je nielen funkčné ystoho porovnanie, ale kombinácia vyhľadávanie či výmenu okamžite. Žiadna akcia by mal byť vždy rovnaký porovnanie,pretože tento nemusí nevyhnutne viesť k zmene akéhokoľvek riadku. Často je potrebné vybrať jednu alebo inú vetvu algoritmu.
Zvyčajná verzia PHP: porovnanie riadkov sa vykonáva funkciou int strcmp (s1 s2). Výsledok funkcie:
  • 0 - rovnaké riadky;
  • -1 - prvý riadok je menší ako druhý;
  • 1 - prvý riadok je viac ako druhý.
  • V praxi to znamená, že prvý riadok je v druhom riadku, z ktorého sa rozhoduje funkcia PHP (line comparison). Viac obmedzená verzia strpos (), pretože v druhom prípade môžete poznať vstupnú pozíciu. Funkcia strcmp () rozlišuje veľké a malé písmená. Ak chcete porovnať reťazce bez zohľadnenia znakového prípadu, PHP ponúka strcasecmp (). Syntax je podobný. V praxi často potrebujete pracovať s celou líniou, ale len s jej časťou. Za týmto účelom súbor funkcií PHP (porovnanie reťazcov) obsahuje strncmp (s1 s2 N). Tretí parameter naznačuje, že porovnanie je len N-byte. Výsledok je podobný strcmp ().

    Pole, riadky a porovnania

    Údaje sú takmer vždy reprezentované reťazcami. Ak zoberieme do úvahy poli, objekty alebo informačné štruktúry, potom ide len o rôzne varianty kombinácie jednodušších štrajkových štruktúr.
    Lineárne polia a riadky môžu byť reprezentované komplementárnym spôsobom. Transformácia poľa do reťazca je funkcia implode (pole, symbol), napríklad: $ margins1 = implode (',', $ style- & gt; getInnerMargin ()); algoritmus /užívateľská práca; $ margins2 = implode (',', $ style- & gt; getInnerMargin ()) umožňuje zlúčiť všetky pozície objektu v riadkovej položke. Potom môžete vykonať porovnanie PHP-line a naraz: $ check = strcmp ($ margins1 $ margins2) a uistite sa, že algoritmus alebopoužívateľ niečo zmenil (alebo nie). Ak vykonáte porovnanie obvyklým spôsobom, musíte prejsť prvkami poľa. Stáva sa to dlhšie a vyzerá to ťažšie.

    Objekty a reťazce

    Ešte šikovnejšie využitie PHP (line comparison) možno implementovať pomocou objektovo orientovaných myšlienok. Moderný pohľad na objekty predpokladá prítomnosť ich vlastností a metód. Prvé z nich sú zvyčajne reprezentované číslami, riadkami, poliami a inými objektmi. Druhá z nich často zahŕňa metódy písania (vložiť) do reťazca a obnovenie z riadku (get).
    Na rozdiel od polí, objekt robí svoju prácu s jej vlastnosťami a interaguje s inými objektmi. Objekt je "kompetentný" v tom, že jeho vlastnosti sú skutočnou hodnotou pre algoritmus, program ako celok.
    Tento moment poskytuje základ a schopnosť zaznamenať záznam do riadku iba potrebné informácie a pri obnovení z reťazca obnoviť všetky pracovné vlastnosti do požadovaného stavu. Zvyčajne v každom objekte existujú významné a pracovné (dočasné) informácie. Uvedenie takejto myšlienky umožňuje ušetriť nielen pamäť, miesto na disku, databázové záznamy, ale tiež umožňuje porovnať reťazce jednoduchším a presnejším spôsobom.

    Syntax a sémantika

    PHP sa dynamicky vyvíja a jeho funkcia ako pri porovnávaní liniek, tak z hľadiska ich spracovania sa neustále zlepšuje. Nič však nebráni tomu, aby vývojár premiestňoval ťažisko do sémantiky. Nepochybne dobrý funkčný, ale jeho použitie môže byť prevedené do obsahovej časti kódu,objektov. Keď je algoritmus znázornený ako systém objektovej interakcie, vyzerá oveľa lepšie ako sekvencia porovnaní a akcií v priamom sekvenčnom, klasickom štýle.

    Súvisiace publikácie