PHP je velmi dobré při zpracování informací. Syntaxe jazyka představuje plnohodnotná sada porovnávacích funkcí, zpracování řetězců, porovnávací operátory.

php porovnání řetězců

Každý algoritmus je posloupnost možností aakce. Ale než se rozhodnete, musíte něco něco srovnat. Řetězce - nejprostornější, efektivní a praktický mechanismus pro řízení algoritmu. Linky - varianta reprezentace dat. A data jsou hlavním předmětem "péče" jakéhokoli algoritmu.

Obvyklá logika "srovnávací akce"

Jazyk dynamického psaní není obecnědělá zvláštní rozdíly v datech, například v PHP, porovnání řetězce a čísla není příliš odlišné. Číslo je také řetězec, pokud obsahuje pouze číslice, období a neexistuje ani jeden znak, který by nebyl použit k reprezentování čísla v žádné jeho formě (matematická notace).

V případě číslování se číslo automaticky spojí s řetězcem bez zbytečných otázek a bez skrytých chyb, i když funkce gettype () udává "integer" nebo "double".

php porovnání dvou řetězců

Existuje však rozdíl mezi používáním funkceis_int () a is_numeric (). První dá pravdu, když je parametr pouze celé číslo, druhá v případě číselného nebo číselného řetězce (proměnná má typ "řetězec", ale obsahuje vše, co je poskytováno matematickým zápisem).

Tento jednoduchý příklad je dobrým příkladem, jako v PHPoperátory porovnávání řetězců ("==", "===", "! =", ...) mohou dát spoustu překvapení. Proměnné mohou změnit svůj typ, nejsou vždy čísla, ale téměř vždy mohou vést k řetězci. V extrémním případě to bude prázdný řetězec.

php operátory porovnání řetězců

Na základě výše uvedených skutečností je v PHP nejpopulárnější porovnávací funkce. Který z nich si vybere, aby vyřešil vývojáře. K regulárním výrazům je k dispozici mnoho možností.

Hranice dostupné funkce

PHP-porovnání dvou řetězců je dobře "hotovo" funkcístrpos () je nejlevnější, pravá a praktická volba. Je-li výsledkem této funkce číslo, pak jednoznačně jeden řádek je stejný jako druhý nebo jeden vstupuje jiný.

Kardinálně opačný, ale také absolutně správný přístup je použití regulárních výrazů.

Příkladem autora není obrázek

Pokud funkce volá $ cResult =scCheckFileName ($ cStr) dává "true", takže řetězec je název souboru vordian. Bude mít pouze jednu možnost rozšíření ".docx" a žádné znaky v názvu: pouze písmena, čísla a znaky "_", "-".

Funkci lze snadno převést na jinétypy souborů: $ cPtr = „/^([a-zA-Z...0-9-_]{4,239}).(html|js|css|png|jpg|docx|txt){1}$/ u ". Tato varianta rozšiřuje rozsah snímání čáry stahovatelný (například porovnání PHP řetězec je aplikován „nahrát soubory na server, bez možnosti vstupu chyby“) pro html, js, css, ...

Pomocí příkazů strpos () a preg_match () -extrémy. Nejsou přímo spojeny s otázkou časového porovnání. Ale otázka algoritmu je otázka použití kombinace stylů, využívajících všechny možnosti k dosažení spolehlivého a správného výsledku.

Funkční PHP: porovnání řetězců

Arsenál jazyka proti liniím není jenomfunkce čistého srovnání, ale také kombinace přímo s vyhledáváním nebo nahrazením. Ne vždy by se akce měla shodovat s porovnáním, neboť ta nutně nevede ke změně v žádném řádku. Často je nutné vybrat jednu nebo jinou větev algoritmu.

Obvyklá verze PHP: porovnání řetězců se provádí pomocí funkce int strcmp (s1, s2).

Funkční výsledek:

  • 0 - řádky jsou stejné;
  • -1 - první řádek je menší než druhý;
  • 1 - první řádek je větší než druhý.

V praxi to znamená, že prvníDruhý řádek, od kterého se rozhoduje funkce PHP (porovnání řetězců). Omezená verze strpos (), protože v druhém případě můžete poznat vstupní pozici.

Funkce strcmp () rozlišuje velká a malá písmena. Pokud chcete porovnat řetězce bez rozlišování malých a malých písmen, doporučuje PHP použít strcasecmp (). Syntaxe je podobná.

V praxi je často nutné pracovat ne s celýmline, ale pouze s jeho částí. Za tímto účelem je součástí sady funkcí PHP (porovnání řetězců) strncmp (s1, s2, N). Třetí parametr označuje, že se porovnávají pouze N-bajty. Výsledek je podobný strcmp ().

Pole, řetězce a porovnání

Data jsou téměř vždy reprezentována řetězci. Pokud uvážíme pole, objekty nebo informační struktury, jsou to jednoduše různé varianty kombinace jednodušších řetězcových struktur.

php porovnání funkcí

Řetězcová pole a řetězce mohou býtjsou prezentovány doplňkovým způsobem. Transformace pole do funkce řetězec implodují (pole, symbol), například: $ margins1 = implodují ( "", $ style-> getInnerMargin ()); ... práce algoritmu / uživatele ...; $ margins2 = implode ("," $ style-> getInnerMargin ()) umožňuje sloučit všechny pozice objektu do řady pozic.

Pak můžete spustit PHP-string porovnání a projednou: $ check = strcmp ($ margins1, $ margins2) a ujistěte se, že algoritmus nebo uživatel něco změnil (nebo ne). Pokud srovnáváte obvyklým způsobem, musíte seřídit prvky pole. Trvá déle a vypadá těžší.

Objekty a řetězce

Ještě efektivnější využití PHP (porovnání řetězců) lze implementovat pomocí objektově orientovaných myšlenek.

Moderní myšlenka na objektypředpokládá existenci vlastností a metod. První jsou obvykle reprezentovány čísly, řetězci, maticemi a jinými objekty. Druhý často zahrnuje metody psaní (vložení) do řetězce a obnovení z řetězce (get).

Na rozdíl od polí, objekt pracujejeho vlastnosti a interaguje s jinými objekty. Objekt je "kompetentní" v tom, co jeho vlastnosti mají skutečnou hodnotu pro algoritmus, program jako celek.

php porovnání řetězců

Tento bod dává důvody a příležitostzáznamy opravit v řádku pouze potřebné informace a při obnově z linky obnovit všechny pracovní vlastnosti v nezbytném stavu. Obvykle v jakémkoli objektu existují informace nezbytné a pracovní (dočasné). Implementace této myšlenky umožňuje ušetřit nejen paměť, diskový prostor, záznamy databáze, ale také umožňuje porovnávat řetězce jednodušším a přesnějším způsobem.

Syntaxe a sémantika

PHP je dynamicky se rozvíjející a jeho funkčnost jako vporovnání linek a jejich zpracování se neustále zlepšuje. Nic však nemůže zabránit vývojáři v přenesení těžiště do oblasti sémantiky.

Nepochybně je funkční dobrý, ale jehoPoužití může být přeneseno do sémantické části kódu do objektů. Když je algoritmus reprezentován jako systém interakce objektů, vypadá mnohem lépe než sekvence srovnání a akcí v přímém sériovém, klasickém stylu.

</ p>