az internet ablakok Android

String funkciók. PHP gyakorlat: A PHP vonal összehasonlító sorának összehasonlítása

A vonalak összehasonlítása.

Szintaxis:

Int strcmp (string str1, string str2)

sUBST_COMPARE ()

Biztonságos az adatfeldolgozáshoz a bináris formanyomtatvány összehasonlításában 2 sor elmozdulással, figyelembe véve vagy kizárva a nyilvántartást (PHP 5)

Leírás:

Int SUBTRE_COMPARE (STRING MAIN_STR, STRING STR, INT OFFSET [, INT HARM [, BOOL CASE_SENSENSITIVE]))))

a SUBTRE_COMPARE () összehasonlítja a Main_STR karakterláncot a karakterből, amelynek száma az offset argumentum, a string str. Összehasonlításképpen, a legfeljebb hosszúságú karakterek vesznek részt.

Visszaadja a 0 számot, ha több str, és 0, ha a vonalak egyenlőek. Ha a hossza nagyobb, mint a Main_str és az offset hossza, a SUBTR_COMPARE () figyelmeztetést jelenít meg, és hamis.

Ha az ügy_érzékenység igaz, az összehasonlítás a nyilvántartás tekintetében történik.

Példa a SUBTR_COMPARE () használatára

echo SUBTRE_COMPARE ("ABCDE", "BC", 1, 2); // 0.
echo SUBTRE_COMPARE ("ABCDE", "BCG", 1, 2); // 0.
echo substr_compare ("abcde", "bc", 1, 2, igaz); // 0.
echo SUBTRE_COMPARE ("ABCDE", "BC", 1, 3); //
echo SUBTRE_COMPARE ("ABCDE", "CD", 1, 2); // -on
echo SUBTRE_COMPARE ("ABCDE", "ABC", 5, 1); // Figyelem
?>

Hasonlítsa össze a sorok kezdetét.
Szintaxis:

Int strncmp (string str1, string str2, int len)

Ez a funkció különbözik az STRCMP-tól (), hogy összehasonlítjuk az összes szót, hanem az első len bájtot. Ha Len kisebb, mint a karakterláncok legkisebb hossza, a vonalakat teljesen összehasonlítja.
Ez a funkció összehasonlítja a két vonalat az uralkodó (pontosabban, Bobytovo) és a visszatérés:

0 - ha a sorok teljesen egybeesnek;

1 - Ha str1 sztring lexikumilag kisebb, mint STR2;

1 - Ha éppen ellenkezőleg, str1 "több" STR2.

Mivel az összehasonlítás áthalad, az esettanulmány az összehasonlítások eredményeit érinti.

strcasecmp

Hasonlítsa össze a vonalakat a regisztráció nélkül.
Szintaxis:

Int strcasecmp (string str1, string str2)

Ugyanaz, mint a StrcMP (), csak akkor, ha a munka nem veszi figyelembe a betűk esetét.

$ Str1 \u003d "Szia!";
$ Str2 \u003d "Szia!";
ha (! STCESECMP ($ STR1, $ STR2))
Echo "$ str1 \u003d\u003d $ STR2, ha összehasonlítja a vonalak regisztráció nélkül";

strncasecmp

Hasonlítsa össze a vonalak megkezdését anélkül, hogy regisztrálna.
Szintaxis:

Int strncasecmp (string str1, string str2, int len)

Az STRNCASECMP () funkció a strcasecmp () és a strncmp () funkciók kombinációja.

strnatcmp

"Természetes" vonalat eredményez.
Szintaxis:

Int strnatcmp (string str1, string str2)

Ez a funkció egy olyan vonalat szimulál, amely egy személyt használna.

$ arr1 \u003d $ arr2 \u003d tömb ("img12.png", "img10.png", "img2.png", "img1.png");
echo "rendes sortnn";
usort ($ arr1, "strcmp");
print_r ($ arr1);
echo "előnyösen sortn";
usort ($ arr2, "strnatcmp");
print_r ($ arr2);

Ez a parancsfájl a következőket jeleníti meg:

Rendes rendezvény (
\u003d\u003e img1.png.
\u003d\u003e img10.png.
\u003d\u003e img12.png.
\u003d\u003e img2.png.
)

Természetes válogatás (
\u003d\u003e img1.png.
\u003d\u003e img2.png.
\u003d\u003e img10.png.
\u003d\u003e img12.png.
)

strnatcasecmp

"Természetes" vonalat eredményez, anélkül, hogy regisztrálnánk.
Szintaxis:

Int strnatcasecmp (string str1, string str2)

Ugyanaz, mint a strnatcmp (), csak figyelmen kívül hagyja a nyilvántartást.

hasonló_text.

Meghatározza a két vonal hasonlóságát.
Szintaxis:

INT Hasonló_Text (String Firsrt, String Second [, Dupla százalék])

A hasonló_text () funkció két vonal hasonlóságát kiszámítja az Oliver (Oliver) által leírt algoritmus szerint.
De ahelyett, hogy egy verem (mint egy pszeudo-kód Oliverben), rekurzív hívásokat használ.
Az algoritmus összetettsége lassúvá teszi a funkciót, és sebessége arányos (n ^ 3), ahol n a legnagyobb karakterlánc hossza.
A funkció visszaadja a mindkét vonalon egybeesett karakterek számát. Ha a harmadik opcionális paraméterre való hivatkozással átadja, tárolja a sorok egybeesését.

letenshtein.

A két vonal bal oldali vonalainak különbségének meghatározása.
Szintaxis:

Int levenshtein (string str1, string str2)
int levenshtein (string str1, string str2, int cost_ins, int cost_rep, int cost_del)
int levenshtein (string str1, string str2, függvényköltség)

A „Különbség az Levenshtein” az a minimális Chilo karakterek kellene cserélni, behelyezése vagy eltávolítása viszont a str1 string STR2. Az algoritmus összetettsége arányos az STR1 és STR2 string hosszainak termékével, ami gyorsabban teszi a funkciót, mint a hasonló_text ().

A függvény első formája visszaadja a szükséges műveletek számát a string szimbólumokon, hogy str1-t transzformáljon STR2-ben.

A második űrlapnak három további paramétere van: a beszúrási, csere- és eltávolítási művelet költsége, ami jobban kiszámolódik, de ugyanakkor kevésbé gyors. Az átalakulás összetettségének integrált mutatóját visszaadják.
A harmadik opció lehetővé teszi az átalakulás összetettségének kiszámításához használt funkció megadását.
A költségfunkciót a következő érvekkel hívják:

alkalmazható művelet (betét, változás, törlés): "I * " R "," D ";

az első sor tényleges szimbóluma

a második sor tényleges szimbóluma

sor pozíció 1.

sor pozíció 2.

a fennmaradó string hossza 1

a fennmaradó string hossza 2

Az eredményül kapott funkciónak vissza kell adnia a művelet költségeit.
Ha több mint 255 karakterből álló karakterlánc, a Levenshtein () függvény visszatér -1,
de ez a hossza több mint elég.

strcoll ()

A sorok összehasonlítása, figyelembe véve az aktuális helyet (PHP 4\u003e \u003d 4.0.5, PHP 5)

Leírás:

Int strcoll (string str1, string str2)

Pozitív számot ad vissza, ha az STR1 kevesebb, mint STR2; Negatív szám, ha az STR1 nagyobb, mint STR2, és 0, ha a vonalak egyenlőek. Strcoll () összehasonlításkor az aktuális helyszínek telepítését használja. Ha a Locale C vagy POSIX telepítve van, ez a funkció hasonló a StrcMP () -hoz.

Kérjük, vegye figyelembe, hogy ez a funkció figyelembe veszi a karakterek nyilvántartását, és az STRCMP () ellentétben nem biztonságos a bináris formában történő feldolgozáshoz.

A PHP nem rossz az információ feldolgozásához. A nyelv szintaxisát az összehasonlító funkciók, a sorfeldolgozás, az összehasonlító üzemeltetők teljes körű csoportja képviseli.

Bármely algoritmus a választások és a cselekvések sorrendje. De mielőtt választanád, össze kell hasonlítanod valamit valamivel. A sorok az algoritmus vezérléséhez leginkább tosak, hatékonyabb és praktikusabb mechanizmusok. Vonalak - az adatok ábrázolásának változata. És az adatok az algoritmus "gondozásának" fő témája.

Normál logika "összehasonlítás-akció"

Általánosságban elmondható, hogy a nyelv nem tesz különbséget az adatokban, például a PHP-ben, a vonalak összehasonlítása és számai nem sok más. A szám is egy karakterlánc, ha csak számokat tartalmaz, egy pontot, és nincs olyan szimbólum, amely nem használható a szám bármely formában (matematikai jelölés).

Az útválasztás esetében az automatika száma egy olyan karakterláncokkal összefonódik, bármilyen kérdés nélkül, és nincs rejtett hiba, még akkor is, ha a GetType () függvény "egészet" vagy "kettős" adja.

Az IS_INT () funkció és az IS_NUMERIC () használata között azonban különbség van. Az első adja az igazságot, ha a paraméter csak egész szám, a második, ha bármely szám vagy numerikus karakterlánc (a változó a "string" típusú, de tartalmaz mindent, amit a matematikai jelölés biztosított).

Ez az egyszerű példa egy jó minta, mint a PHP elrendezési összehasonlító üzemeltetőknél ("\u003d\u003d", "\u003d\u003d\u003d", "! \u003d", ...) sok meglepetés. A változók megváltoztathatják típusukat, nem mindig számok, de szinte mindig a karakterláncba kerülhetnek. Szélsőséges esetekben üres karakterlánc lesz.

A fentiek alapján a sor összehasonlítás PHP funkciói a legnépszerűbbek. Pontosan mit válasszon, megoldja a fejlesztőt. Sok lehetőség áll rendelkezésre a rendszeres kifejezésekig.

A rendelkezésre álló funkcionális határok

A két soros pHP összehasonlítása jó "teszi a" Strppos () funkciót - a legolcsóbb, hűséges és praktikus opciót. Ha a funkció funkciói, akkor egyértelműen egy sor más, vagy a másikba lép.

Óvatosan ellentétes, de egy teljesen helyes megközelítés is a rendszeres kifejezések használata.

Ha a $ CRESULT \u003d SCCHECKFILENAME ($ CSTR) függvénye "igaz", akkor azt jelenti, hogy a karakterlánc a Vords fájl neve. Csak egy lehetősége van a ".docx" kiterjesztésre, és nincs karakter a névben: csak betűk, számok és jelek "_", "-".

A funkció könnyen átalakítható más típusú fájlokká: $ cptr \u003d "/ ^ ((4,239))). (HTML | JS | CSS | png | jpg | jpg | jpg | jpg | docx | txt) (1) $ / u". Ez az opció a karakterlánc ellenőrzése kiterjeszti a letölthető tartományt (például a PHP Stroke összehasonlításban ", hogy letöltse a fájlokat egy kiszolgálóra, egyetlen esélye nélkül egy bemeneti hiba") HTML, JS, CSS, ...

Strppos () és preg_match () - szélsőségek használata. Nem rendelkeznek közvetlen kapcsolatban az összehasonlítás kérdésével. De végül is, az algoritmus kérdése a stílusok kombinációjának alkalmazása, minden lehetőséget a megbízható és helyes eredmény elérése érdekében.

PHP funkciók: vonalak összehasonlítás

Az Arsenal nyelv a vonalakhoz képest nemcsak a tiszta összehasonlítás funkciói, hanem a keresési vagy csere közvetlen kombinációja is. Nem mindig az akciónak meg kell egyeznie az összehasonlítással, mivel az utóbbi nem feltétlenül semmilyen karakterlánc változáshoz vezet. Gyakran ki kell választania az algoritmus egy vagy egy másik ágát.

A szokásos PHP opció: A sor összehasonlítása biztosítja az INT STRCMP (S1, S2) funkciót.

Eredmény funkció:

  • 0 - A sorok egyenlőek;
  • -1 - Az első sor kevesebb, mint a második;
  • 1 - Az első sor nagyobb, mint a második.

A gyakorlatban ez azt jelenti, hogy az első sor szerepel a másodikban, amelyből a PHP funkció (vonalak összehasonlítása) dönt. A STRPPT () korlátozottabb verziója, mert az utóbbi esetben tudhatja a belépés helyét.

Az STRCMP () függvény eseti és függő. Ha összehasonlítani szeretné a vonalakat anélkül, hogy figyelembe venné a szimbólum-regisztert, a PHP-t a Strcasecmp () használatához ajánlja. A szintaxis hasonló.

A gyakorlatban gyakran szükség van az egész karakterláncmal, de csak a részével. Ehhez a PHP funkciók (vonalak összehasonlítása) tartalmazza az STRNCMP (S1, S2, N). A harmadik paraméter csak az N-bájt összehasonlítását jelzi. Az eredmény hasonló az STRCMP-hez ().

Tömbök, sorok és összehasonlítás

Az adatokat szinte mindig vonalak képviselik. Ha olyan tömböket, tárgyakat vagy információs struktúrákat tartunk, akkor ezek egyszerűen különböző lehetőségek az egyszerűbb struktúrák kombinációjához.

A string tömbök és vonalak kiegészíthetők. A tömb átalakítása az implike funkciós karakterláncban (tömb, szimbólum), például: $ margins1 \u003d implode (",", $ style-\u003e getinnermargin ()); ... Munka algoritmus / felhasználó ...; $ margins2 \u003d implode (",", $ style-\u003e getinnermargin ()) lehetővé teszi, hogy az objektum összes objektumát lefolytassa a pozíciós karakterláncban.

Ezután elvégezheti a karakterláncok pHP-összehasonlítását és egyszerre: $ check \u003d strcmp ($ margins1, $ margins2), és győződjön meg róla, hogy az algoritmus vagy felhasználó megváltoztatta valamit (vagy nem). Ha összehasonlítja a szokásos módon, akkor meg kell rendeznie a tömbök elemeit. Ez hosszabb ideig tart, és nehezebbnek tűnik.

Tárgyak és húrok

A PHP (vonalak összehasonlítása) még látványosabb felhasználása objektumorientált ötleteken keresztül valósítható meg.

A tárgyak modern ötlete a tulajdonságok és a módszerek jelenlétét jelenti. Az elsőt általában számok, vonalak, tömbök és egyéb tárgyak képviselik. A második gyakran tartalmaz felvételi módszereket (elhelyezve) a string és a helyreállítás a string (Get).

Ellentétben tömbök, az objektum által dolgozni annak tulajdonságait és kölcsönhatásait más tárgyakat. Az "kompetens" objektum, amelynek tulajdonságai az algoritmus valós értéke, a program egésze.

Ez a pillanat megadja az alapot, és a felvétel során csak a szükséges információkat rögzítheti, és a karakterláncból visszanyerve, visszaállítja az összes működési tulajdonságot a kívánt állapotba. Általában minden objektumban van információ, és működik (ideiglenes). Az ilyen ötlet megvalósítása lehetővé teszi, hogy ne csak memóriát, lemezterületet, adatbázis-bejegyzést takarítson meg, hanem lehetővé teszi a karakterláncok egyszerűbb és pontos eszközeinek összehasonlítását is.

Szintaxis és szemantika

A PHP dinamikusan fejlődik, és funkcionalitása mind a sorok összehasonlításában, mind feldolgozásával kapcsolatban folyamatosan javul. Azonban semmi sem akadályozza meg a fejlesztőt, hogy átadja a súlypontot a szemantikai területre.

Kétségtelen, hogy a funkcionalitás jó, de a használatát a kód szemantikai részébe lehet áthelyezni. Ha az algoritmus az objektumok kölcsönhatásának rendszerként jelenik meg, akkor jelentősen jobban néz ki, mint az összehasonlítások és az akciók sorrendje közvetlen szekvenciális, klasszikus stílusban.

Ez a fejezet az összehasonlító üzemeltetőket írja le. Ezek az operátorok ellenőrzik az egyenlőséget (például egyenlő, kevésbé azonos módon egyenlőek stb.) A két érték és a valódi vagy hamis visszatérő, attól függően, hogy az operandok korreláltak. Az összehasonlító üzemeltetők mindig visszaadják a logikai értékeket, és ezeket az értékeket leginkább az olyan üzemeltetőknél használják, mint például, vagy a program végrehajtásának ellenőrzése.

Az üzemeltetők összehasonlítása
PéldaNévEredmény
$ i \u003d\u003d $ yEgyarántIgaz, ha $ I $ Y az adattípusok konvertálása után.
$ i \u003d\u003d\u003d $ yAzonos módonIgaz, ha $ i $ y, ugyanaz az adattípus.
$ I! \u003d $ yNem egyenlő
$ I.<> $ y.Nem egyenlőIgaz, ha $ I nem $ y az adattípusok konvertálása után.
$ I! \u003d\u003d $ yNem azonosIgaz, ha $ i nem $ y, vagy különböző típusúak.
$ I.< $y KevésbéIgaz, ha $ I jelentése szigorúan kevesebb, mint $ y.
$ I\u003e $ yTöbbIgaz, ha $ I szigorúan több $ y.
$ I.<= $y Kisebb vagy egyenlőIgaz, ha $ I kisebb vagy egyenlő $ y.
$ I\u003e \u003d $ yTöbb vagy egyenlőIgaz, ha $ i nagyobb, mint $ y.

Megjegyzés: Ha megpróbálja megjeleníteni az összehasonlító művelet eredményét a képernyőn, az igazság értéke megjelenik a böngészőablakban, mint 1. A FALSE érték megfelel a 0 számnak, és nem jelenik meg a képernyőn (elvben emlékeznie kell a logikai típus leírásából). Ha az eredményt igaz vagy hamis formában szeretné látni, használja a Var_dump () funkciót.

Érdemes megjegyezni: Ha egy karakterláncot összehasonlítunk egy számmal vagy két vonallal, amelyek számokat tartalmaznak, minden egyes karakterláncot a számra alakítják át, és számokként hasonlítják össze.

Operator \u003d\u003d (egyenlőség)

A kezelő \u003d\u003d (egyenlőség) elfogadja az operandusokat bármilyen típusú, ha két operandus egyenlő, visszatér az igazi, ellenkező esetben hamis.

Ha az operandusok különböző típusú adatokat tartalmaznak, a PHP megpróbálja átalakítani őket, mielőtt összehasonlítaná az egyik típushoz, például egy ilyen "4" \u003d\u003d 4 expresszió visszatér, mivel a PHP automatikusan egy kompozíció értékű értékeket eredményez adattípus. Hasonlóképpen, a $ a \u003d\u003d 1 expresszió, ha az A $ A változó értéket tartalmaz 1 értéket tartalmaz 1. Ha azt szeretné, hogy az implicit típusú konverziót összehasonlítsa, akkor az azonosító üzemeltetőt tovább kell tekinteni.

Operator \u003d\u003d\u003d (identitás)

Az üzemeltető \u003d\u003d\u003d (identity) veszi az operandusok bármilyen típusú és visszatér igaz, ha az értékek megegyeznek (azonos), és hamis, ha ettől eltérő. Mi különbözik az egyenlőségkezelőtől? Az identitás-üzemeltető két operandust ellenőrzi az "identitás" operandus, amelyet a véletlen egybeesés szigorú meghatározása irányítja, ez azt jelenti, hogy az operandusok egyenlőségén kívül maguk is ugyanazon adattípusra kell utalniuk. Például egy ilyen kifejezést 5 \u003d\u003d\u003d "5" -ként tartjuk, ennek a kifejezésnek az eredménye a FALSE értéke, mivel a bal oldali érték egy szám, és a jobb oldali érték egy karakterlánc, Vagyis ezek az értékek különböző adattípusokkal rendelkeznek. Ne feledje, hogy az operátorok \u003d\u003d és \u003d\u003d\u003d "egyenlő" és "azonos módon / azonos módon egyenlő."

Operátor! \u003d Vagy<> (egyenlőtlenségek)

Kezelő egyenlőtlenség Két típusa van:! \u003d És<> . Ez a kezelő ellenkezője \u003d\u003d és visszatér az igaz, ha az operand értékek nem egyenlőek. Az egyenlőtlenségi kezelő csak akkor ad vissza, ha az értékek mindkét oldalán megegyeznek egymással.

$ var2); // vissza a hamis var_dump ("Home"<> "ITTHON"); // megtartja az igazat?\u003e

Operátor! \u003d\u003d (nem identitás)

A kezelő! \u003d\u003d \u200b\u200b(nem identitás) ellenőrzést végez, pontosan az ellenkező kezelő \u003d\u003d\u003d. Visszatér, ha az operandus értékek nem egyenlőek egymással, vagy nem az azonos adattípusra vonatkoznak. Példaként tekintse meg a következő kifejezést: 7! \u003d\u003d "7", a "nem identitás" operátor visszatér, mert a bal oldali érték, és az érték a megfelelő vonal, azaz Lásd a különböző típusú adatokat. Innen könnyű megjegyezni, hogy az operátorok! \u003d És! \u003d\u003d "nem egyenlő" és "nem azonos / azonos módon egyenlően".

Operátor\u003e (több)

A kezelő\u003e (több) használatakor az összehasonlítás csak akkor ad vissza, ha az üzemeltető bal oldalán lévő érték nagyobb, mint a jobb oldalán. Mint más operátorok, a kezelő\u003e nem csak numerikus értékekkel, hanem karakterláncokkal is működik. De hogyan lehet egy vonal más?

Ha a kisbetűs betűsorokkal dolgozik, több betű a nagybetűkben. A PHP-karakterláncok összehasonlításakor először ellenőrzi a vonal első betűjét az eltéréshez. Ha a különbséget nem észlelik, akkor a következő karakterre stb., Amíg a különbség meg nem történik, vagy a vonal vége elérésre kerül. Ha a kezelői oldalak mindegyikének két értéke egyenlő lesz, akkor az üzemeltető is visszaadja a FALSE-t.

3); // Return True Var_dump ("Hi"\u003e "hi"); // visszaadja a hamis var_dumpot (1\u003e 1); // megtartja a hamis?\u003e

Operátor< (меньше)

Operátor< (меньше ) является функциональной противоположностью оператора «больше». Он возвращает true , когда значение слева от него меньше значения, находящегося справа, и false , если значение левого операнда больше правого или значения равны.

Operator\u003e \u003d (több vagy egyenlő)

Operator\u003e \u003d ( több vagy egyenlő) Kissé eltér az összehasonlító piaci szereplőktől, amelyeket korábban tekintettek. Ez hozzáadja a két érték egyenlőségének lehetőségét mindkét oldalán, vagyis az igazi visszatérés, az üzemeltető bal oldalához tartozó értéknek nagyobb vagy egyenlőnek kell lennie. A "nagyobb vagy egyenlő" operátor csak akkor, ha a bal oldali érték kisebb, mint a jobb érték.

\u003d 5); // True Var_dump visszatér ("hi"\u003e \u003d "hi"); // Return True Var_dump (1\u003e \u003d 2); // megtartja a hamis?\u003e

Operátor<= (kisebb vagy egyenlő)

Operátor<= (меньше или равно) похож на оператор «больше или равно». Чтобы оператор <= вернул true , значение слева от оператора должно быть меньше или равно значению справа от него. Он возвращает false , только если значение слева от него больше, чем значение справа.