Php modulo rozdělení. PHP: Aritmetické operátory. Operace zvýšení a snížení

💖 Líbí se vám? Sdílejte odkaz se svými přáteli

Programátoři, kteří potřebují provádět citlivé numerické, vědecké nebo statistické výpočty, pravděpodobně nebudou považovat webový skriptovací jazyk za přijatelného kandidáta pro tuto roli. Navzdory výše uvedenému však jazyk PHP nabízí vynikající sadu funkcí, které zcela poskytují řešení většiny matematických problémů, které vznikají v procesu spouštění skriptů pro web. Kromě toho PHP poskytuje některé pokročilejší funkce, jako je libovolně přesná aritmetika, hashovací knihovny a kryptografické knihovny.

Vývojáři jazyka PHP zvolili dobře podložený přístup a nepokusili se znovu vynalézt kola navržená pro tento účel. Faktem je, že mnoho z nejzákladnějších matematických funkcí používaných v PHP jsou jednoduše obaly kolem svých protějšků v jazyce C.

Matematické operace

Většina matematiky v PHP se provádí spíše ve formě vestavěných funkcí než operací. Kromě operátorů porovnání nabízí PHP pět jednoduchých aritmetických operátorů a také některé zkratkové operátory, které vám umožňují sestavit kratší inkrementační, dekrementační a přiřazení výrazů.

Aritmetické operace

Pět základních aritmetických operací zahrnuje operace běžně implementované v jakékoli čtyřfunkční kalkulačce plus modulo (%). Stručný popis aritmetických operací je uveden v tabulce:

Aritmetické operace
Úkon Popis
+ Vrátí součet hodnot svých dvou operandů
- Pokud existují dva operandy, pak se hodnota pravého operandu odečte od hodnoty levého. Pokud existuje pouze pravý operand, vrátí operace hodnotu tohoto operandu s opačným znaménkem
* Vrátí součin hodnot svých dvou operandů
/ Vrátí výsledek s pohyblivou řádovou čárkou vydělení hodnoty levého operandu hodnotou pravého operandu
% Vrátí zbytek celého čísla dělený hodnotou levého operandu a absolutní hodnotou pravého operandu

Při použití prvních tří aritmetických operací popsaných výše (+, -, *) v programu byste měli vzít v úvahu, že při provádění těchto operací dochází k šíření typu z hodnot s plovoucí desetinnou čárkou s dvojitou přesností na celočíselné hodnoty. To znamená, že pokud jsou oba operandy operace celá čísla, pak je výsledkem celé číslo, a pokud alespoň jeden z operandů je číslo s plovoucí desetinnou čárkou s dvojitou přesností, pak je výsledkem s plovoucí desetinnou čárkou s dvojitou přesností. číslo. K šíření stejného typu dochází při provádění operace dělení; navíc je zde další efekt, že výsledek se stane číslem s plovoucí desetinnou čárkou s dvojitou přesností, pokud se dělení neprovede beze zbytku (zcela).

Operace modulo (%) v PHP přijímá celočíselné operandy, a když je tato operace aplikována na čísla s plovoucí desetinnou čárkou s dvojitou přesností, pak se tato čísla nejprve převedou na celá čísla (zahozením zlomkové části). Výsledkem takové operace je vždy celé číslo.

Operace zvýšení a snížení

Velká část syntaxe PHP je odvozena z C a programátoři C jsou známí svou láskou ke stručnosti a jsou na ni hrdí. Operátory inkrementace a dekrementace, převzaté z jazyka C, umožňují výstižněji reprezentovat výrazy jako $počet = $počet + 1, které se v programech obvykle vyskytují poměrně často.

Operátor zvýšení (++) se používá k přičtení jedničky k hodnotě proměnné ovlivněné operací a operátor snížení (--) odečte jedničku od hodnoty proměnné.

Každá z těchto dvou operací má dvě varianty - přípona(v tomto tvaru je znak operace umístěn bezprostředně za proměnnou ovlivněnou operací) a předpona(v tomto tvaru je znak operace umístěn bezprostředně před proměnnou, na kterou se operace vztahuje). Oba mají stejný vedlejší účinek změny hodnoty proměnné, ale operátory přípon a předpon vracejí různé hodnoty, když jsou použity jako výrazy. Operace s příponou funguje tak, že se hodnota proměnné změní po vrácení hodnoty výrazu, a operace s předponou funguje tak, že se nejprve změní hodnota a poté se do proměnné vrátí nová hodnota. Tento rozdíl lze zjistit pomocí operátorů dekrementace a inkrementace v operátorech přiřazení:

PHP kód $počet = 0; $vysledek = $pocet++; echo "Výsledek přírůstku $count++: ".$výsledek."
"; $počet = 0; $výsledek = ++$počet; echo "Výsledek přírůstku ++$počtu: ".$výsledek."
";

Následující příkazy vytvoří v okně prohlížeče následující výstup:

Přírůstkové operace

V tomto příkladu je operátor $result = $count++ zcela ekvivalentní operátorům:

PHP kód $vysledek = $pocet; $počet = $počet + 1;

Spolu s tím je operátor $result = ++$count ekvivalentní následujícím operátorům:

PHP kód $počet = $počet +1; $vysledek = $pocet;

Operátoři přiřazení

Operátory inkrementace (a dekrementace) snižují množství kódu potřebného k přidání jedničky k hodnotě proměnné, ale nesnižují množství kódu, který přiřazuje proměnnou výsledek přičtení její hodnoty k jinému číslu nebo výsledek jiných aritmetických operací. . Naštěstí má všech pět aritmetických operátorů odpovídající operátory přiřazení (+=, -=, *=, /= a %=), které vám umožňují přiřadit výsledek aritmetické operace na hodnotě této proměnné k proměnné v jednom krátký výraz. Například operátor

PHP kód $počet = $počet * 3;

lze zkrátit jako

PHP kód $počet *= 3;

Jednoduché matematické funkce

Dalším krokem k tomu, aby byl program složitější než ten, který používá pouze aritmetické operace, je použití všech druhů funkcí. Funkce umožňují provádět úkoly, jako je převod z jednoho číselného typu na jiný (viz článek Datové typy) a nalezení minimálního nebo maximálního počtu v sadě čísel. Následující tabulka ukazuje jednoduché matematické funkce:

Jednoduché matematické funkce PHP
Funkce Popis
podlaha() Vezme jeden skutečný parametr (obvykle číslo s plovoucí desetinnou čárkou s dvojitou přesností) a vrátí největší celé číslo, které je menší nebo rovno tomuto skutečnému parametru (zaokrouhleno dolů)
ceil() Název této funkce je zkratkou slova strop. Funkce vezme jeden skutečný parametr (obvykle číslo s plovoucí desetinnou čárkou s dvojitou přesností) a vrátí nejmenší celé číslo, které je větší nebo rovno tomuto skutečnému parametru (zaokrouhlení nahoru)
kolo() Vezme jeden skutečný parametr (obvykle číslo s plovoucí desetinnou čárkou s dvojitou přesností) a vrátí nejbližší celé číslo
břišní svaly() Absolutní hodnota čísla. Pokud má jediný číselný skutečný parametr zápornou hodnotu, pak funkce vrátí odpovídající kladné číslo; pokud je aktuální parametr kladný, pak funkce vrátí samotný aktuální parametr
min() Přijímá libovolný počet číselných skutečných parametrů (ale alespoň jeden) a vrací nejmenší ze všech skutečných hodnot parametrů
max() Přijímá libovolný počet číselných skutečných parametrů (ale ne méně než jeden) a vrací největší ze všech skutečných hodnot parametrů

Například výsledek následujícího výrazu je 3, protože hodnota každého výrazu volání funkce je také 3:

PHP kód $vysledek = min(3, abs(-3), max(kolo(2.7), ceil(2.3), podlaha(3.9)));

Generování náhodných čísel

Jazyk PHP používá dva generátory náhodných čísel (volané pomocí funkcí rand() A mt_rand()). Každý z těchto generátorů je spojen se třemi funkcemi stejného účelu: funkcí nastavení počáteční hodnoty ( srand() A mt_srand()), samotnou funkci pro získání náhodného čísla a funkci, která vzorkuje největší celé číslo, které může generátor vrátit (( getrandmax() A mt_getrandmax())). Funkce getrandmax() a mt_getrandmax() vrátí nejvyšší číslo, které může vrátit funkce rand() nebo mt_rand(), které je na platformách Windows omezeno na 32768.

Volba specifické funkce generování pseudonáhodných čísel použité ve funkci rand() může záviset na tom, se kterými knihovnami byl PHP interpret zkompilován. Naproti tomu generátor mt_rand() používá vždy stejnou funkci generování pseudonáhodných čísel (mt je zkratka pro Mersenne Twister) a autor provozní dokumentace k funkci mt_rand() tvrdí, že tato funkce je také rychlejší a " více random" (z kryptografického hlediska) než rand(). Nemáme důvod pochybovat o pravdivosti těchto tvrzení, a proto raději používáme funkci mt_rand() než rand().

Při použití některých verzí PHP na některých platformách se zdá, že funkce rand() a mt_rand() produkují zdánlivě rozumná náhodná čísla, a to i bez předchozího nastavení semena. Ale takovému dojmu by se nemělo věřit. Za prvé, programy, které používají funkce pro generování náhodných čísel bez zadání počáteční hodnoty, nelze snadno přenést na jiné platformy a za druhé není zaručeno spolehlivé fungování těchto funkcí bez zadání počáteční hodnoty.

Typický způsob, jak nastavit počáteční hodnotu pro libovolný generátor náhodných čísel PHP (pomocí funkce mt_srand() nebo srand()) je následující:

PHP kód mt_srand((double)microtime()*1000000);

Tento operátor nastavuje počáteční hodnotu generátoru, rovnající se počtu mikrosekund, které do této doby uplynuly od započítání poslední celé sekundy. (Přetypování na zdvojnásobení v tomto příkazu je ve skutečnosti nutné, protože funkce microtime() vrací řetězec, který je považován za celé číslo v operaci násobení, ale nikoli v operaci předávání parametrů funkci.) Doporučujeme, aby čtenář zadal zadaný inicializační operátor, i když zcela nerozumí účelu tohoto operátoru; Jednoduše umístíte tento příkaz na každou stránku PHP, jen jednou, před použitím odpovídající funkce mt_rand() nebo rand(), zajistí, že se počáteční bod změní, a proto pokaždé vytvoří jinou náhodnou sekvenci.

Tato konkrétní metoda nastavení počáteční hodnoty byla hluboce promyšlena těmi specialisty, kteří plně chápou všechny nuance generování pseudonáhodných čísel, a proto s největší pravděpodobností zůstane navždy lepší než jakékoli pokusy jakéhokoli jednotlivého programátora přijít s něčím „záludnější“.

Je zřejmé, že tyto funkce generující pseudonáhodná čísla vracejí pouze celá čísla, ale náhodné celé číslo z daného rozsahu lze snadno převést na odpovídající číslo s plovoucí desetinnou čárkou (řekněme číslo z rozsahu 0,0 až 1,0 včetně) pomocí výrazu jako rand () / getrandmax(). Zadaný rozsah pak lze podle potřeby škálovat a posouvat. Níže je uveden příklad:

PHP kód // Řekněme, že potřebujeme vygenerovat náhodné číslo od 100,0 do 120,0 $random = 100,0 + 20,0 * mt_rand() / mt_getrandmax(); echo $random."
"; // Generování celých čísel (100 - 120); echo round($random);

Zkuste stránku s tímto kódem několikrát obnovit, abyste zajistili, že budou generována náhodná čísla.

Matematické konstanty

Ve verzi PHP 4.0 byla v dokumentaci popsána pouze jedna matematická konstanta - M_PI (hodnota π, reprezentovaná jako číslo s plovoucí desetinnou čárkou s dvojitou přesností). A počínaje PHP 4.0.2 bylo zavedeno mnoho nových konstant. Většina z těchto nových konstant se vztahovala k π (nebo jeho násobkům), e (nebo jeho násobkům) a odmocninám; některé konstanty navíc patřily k jiným typům. Ale v následujících vydáních byl seznam konstant z mnoha důvodů opět zredukován na relativně malý počet předdefinovaných matematických konstant:

PHP matematické konstanty
Konstantní Popis
M_PI π
M_PI_2 π/2
M_PI_4 π/4
M_1_PI 1/π
M_2_PI 2/π
M_2_SQRTPI 2 / sqrt(π)
E
M_SQRT2 sqrt(2)
M_SQRT1_2 1 / sqrt(2)
M_LOG2E log2(e)
M_LOG10E log(e)
M_LN2 loge (2)
M_LN10 loge (10)

Kontrola formátu čísla

Jazyk PHP poskytuje řadu funkcí, které vám umožní zkontrolovat správnou reprezentaci čísel. Přestože PHP nemá přísnou kontrolu typu, doporučuje se implementovat některé z těchto kontrol do vašeho kódu v případě potřeby, abyste mohli předvídat charakteristiky výsledků, které obdržíte, a také zvolit nejlepší způsob, jak s nimi naložit.

První a nejjednodušší kontrolou je použití funkce is_numeric(). Stejně jako u většiny jiných takových testů vrací funkce is_numeric booleovský výsledek – true, pokud jsou jí předávaným parametrem číselná data jakéhokoli typu (se znaménkem nebo bez znaménka, celé číslo nebo s plovoucí desetinnou čárkou) nebo matematický výraz, který vrací platnou číselnou hodnotu.

Používání funkcí is_int() A is_float Můžete určit, zda je číslo celé číslo nebo zlomek. Další dvě kontroly jsou trochu složitější: funkce is_finite() A is_infinite() umožňují provádět přesně ty testy, které naznačují jejich názvy (ať už je počet konečný nebo nekonečný). Ale přísně vzato, rozsah hodnot, přes který se tyto funkce rozšiřují, nemůže zahrnovat skutečné nekonečno (a lze vůbec zkontrolovat, zda má číslo nekonečně velkou hodnotu?). Místo toho se používají limity rozsahu hodnot s pohyblivou řádovou čárkou povolených na konkrétním systému.

Níže je uveden příklad použití těchto funkcí:

PHP kód is_numeric(4); // true is_numeric(25 - 6); // true is_numeric("25"); // true is_numeric("25 - 6"); // false is_int(4); // true is_int(4.2); // false is_int("4"); // false - tato kontrola je přísnější než kontrola pomocí funkce is_numeric() is_float(4); // false is_float(4.0); // true is_float(M_PI); // skutečný

Převod číselných soustav

Ve výchozím nastavení používá PHP základ 10 k převodu číselných hodnot z externí na interní reprezentaci dopředu a dozadu. Také můžete PHP interpretu sdělit, že externí reprezentace používá základní 8 osmičkových čísel (k tomu musíte zadat úvodní 0). ), nebo hexadecimální čísla zadaná se základem 16 (k tomu musíte před číslo zadat 0x).

Po převodu čísel z externí reprezentace na interní jsou samozřejmě čísla uložena v binárním formátu a všechny základní aritmetické a matematické výpočty jsou prováděny v samotném operačním systému v základu 2. Jazyk PHP navíc poskytuje množství funkcí pro převod čísel z jednoho základu systému počítání na jiný. Přehled těchto funkcí je uveden v tabulce níže:

Funkce převodu číselného systému
Funkce Popis
BinDec() Vezme parametr jednoho řetězce, který je binárním celým číslem (číslo se základem 2) a vrátí základní 10 řetězcovou reprezentaci tohoto čísla
DecBin() Podobné jako BinDec(), ale převádí se ze základu 10 na základ 2
OctDec() Podobné jako BinDec(), ale převádí se ze základu 8 na základ 10
Vařit() Podobné jako BinDec(), ale převádí se ze základu 10 na základ 8
HexDec() Podobné jako BinDec(), ale převádí se ze základu 16 na základ 10
DecHex() Podobné jako BinDec(), ale převádí se ze základu 10 na základ 16
base_convert() Přijímá parametr řetězce (představující celé číslo, které se má převést) a dva celočíselné parametry (původní a požadovaný radix). Vrátí řetězec představující převedené číslo. V tomto řádku jsou čísla větší než 9 (10 až 35) reprezentována znaky a-z. Původní i požadované báze musí být v rozmezí 2-36

Všechny převodní funkce číselného systému jsou speciální funkce, které převádějí čísla z jednoho konkrétního základu na jiný. Výjimkou je funkce base_convert(), která přijímá libovolné parametry označující počáteční a výslednou bázi.

Všimněte si, že všechny převodní funkce číselného systému přijímají řetězcové parametry a vracejí řetězcové hodnoty, ale můžete použít desítkové číselné parametry a spolehnout se na PHP interpret, že převod typu provede správně. Jinými slovy, jak DecBin("1234"), tak DecBin(1234) produkují stejný výsledek.

Exponenty a logaritmy

Jazyk PHP obsahuje standardní exponenciální a logaritmické funkce ve dvou variantách – pro práci v základu 10 a základu e (které jsou uvedeny v tabulce).

PHP poskytuje funkci exp() pro zvýšení e na danou mocninu, ale neexistuje žádná funkce s jedním parametrem, která by zvýšila 10 na danou mocninu. Místo toho však můžete použít funkci pow(), která přebírá dva parametry a dává 10 jako první parametr.

Zkontrolováním identity takto získaných výsledků můžete ověřit, že exponenciální a logaritmické funkce se stejným základem jsou vzájemně inverzní:

PHP kód $test_449 = 449,0; $test_449 = pow(10, exp(log(log10($test_449)))); echo "test_449 = $test_449"; // test_449 = 449

Goniometrické funkce

Jazyk PHP poskytuje standardní sadu základních goniometrických funkcí, obecné informace o nich jsou uvedeny v tabulce:

Goniometrické funkce
Funkce Popis
pi() Nepotřebuje žádné parametry a vrací přibližnou hodnotu π (3,1415926535898). Lze použít zaměnitelně s konstantou M_PI
hřích() Přijímá číselný parametr v radiánech a vrací sinus parametru jako číslo s plovoucí desetinnou čárkou s dvojitou přesností
cos() Vezme číselný parametr v radiánech a vrátí kosinus parametru jako číslo s plovoucí desetinnou čárkou s dvojitou přesností
opálení() Přijme číselný parametr v radiánech a vrátí tangens parametru jako číslo s plovoucí desetinnou čárkou s dvojitou přesností
jako v() Vezme číselný parametr a vrátí arkussinus parametru v radiánech. Vstupy musí být mezi -1 a 1 (funkce přijímající vstupy mimo tento rozsah vede k výsledku NAN). Výsledky se pohybují od -π/2 do π/2
acos() Vezme číselný parametr a vrátí arc cosinus parametru v radiánech. Vstupy musí být v rozsahu -1 až 1 (funkce přijímající vstupy mimo tento rozsah vede k výsledku NAN. Výsledky jsou v rozsahu 0 až π
opálení() Vezme číselný parametr a vrátí arkustangens parametru v radiánech. Výsledky se pohybují od -π/2 do π/2

Níže je uveden příklad sestavení tabulky pro výpočet goniometrických funkcí pro „standardní“ úhly:

PHP kód function display_trigonometry($func_array, $input_array) ( // echo záhlaví funkce " ";) echo""; // Vytiskne zbytek tabulky foreach($input_array jako $input) ( echo " "; foreach($func_array jako $func) ( echo " ";) echo"";) echo"
Význam/funkce$func
".sprintf("%.4f",$input).""; printf("%4.4f", $func($input)); echo "
"; ) display_trigonometry(pole("sin", "cos", "tan"), pole(0, M_PI / 6, M_PI / 3, M_PI / 2, M_PI));

Příklad použití goniometrických funkcí v PHP

Důvodem pro získání velmi velkých (ale ne nekonečných) tečných hodnot je to, že jmenovatelé by teoreticky měli být nula, ale ve skutečnosti se mírně liší od nuly kvůli chybám zaokrouhlování.

Výpočet libovolné přesnosti (pomocí funkcí BC)

Celé číslo a typy s plovoucí desetinnou čárkou s dvojitou přesností jsou naprosto dostačující pro většinu matematických problémů, se kterými se setkáváme ve webovém skriptování, ale každá instance hodnoty reprezentované těmito typy vyžaduje pevné množství paměti počítače, takže velikost a přesnost reprezentace čísel u těchto typů nevyhnutelně zavést omezení.

Přesné rozsahy hodnot těchto datových typů mohou samozřejmě záviset na architektuře serverového počítače, ale celočíselné hodnoty se mohou typicky pohybovat od -2 31 -1 do 2 31 -1 a čísla s plovoucí desetinnou čárkou s dvojitou přesností představují čísla s přesností asi 13 až 14 desetinných číslic. Na druhou stranu, pro řešení problémů, které vyžadují použití širšího rozsahu reprezentace nebo větší přesnosti, poskytuje PHP libovolné přesné matematické funkce(také nazývané BC funkce, pojmenované podle unixového nástroje pro libovolné přesné výpočty).

Může se stát, že v kompilaci interpretu PHP nejsou zahrnuty libovolné přesné funkce, zejména pokud uživatel kompilaci provedl sám, protože k tomu by uživatel musel vědět, že ve fázi konfigurace je nutné zahrnout zaškrtávací políčko do pole parametry --enable-bcmath. Chcete-li zkontrolovat, zda jsou zadané funkce dostupné, zkuste vyhodnotit výraz bcadd("1","1"). Pokud se zobrazí chybová zpráva, která uvádí nedefinovanou funkci, budete muset překonfigurovat interpret PHP a znovu jej zkompilovat.

Funkce BC jako parametry a návratové hodnoty používají spíše řetězce než číselné typy s pevnou délkou. Vzhledem k tomu, že v PHP je délka řetězců omezena pouze velikostí dostupné paměti, mohou být čísla použitá ve výpočtech libovolně dlouhá. Základní výpočty se provádějí v desítkové podobě a jsou velmi podobné těm, které člověk může dělat s tužkou a papírem (pokud může pracovat velmi rychle a být trpělivý). Funkce BC integer jsou přesné a umožňují vám použít tolik číslic, kolik potřebujete, zatímco funkce s plovoucí desetinnou čárkou provádějí výpočty s přesností na zadaný počet desetinných míst. Obecné informace o funkcích BC jsou uvedeny v tabulce níže:

Matematické funkce s libovolnou přesností (funkce BC)
Funkce Popis
bcadd() Přijímá dva řetězcové parametry představující čísla a volitelný celočíselný parametr označující faktor měřítka. Vrátí součet prvních dvou parametrů jako řetězec s počtem desetinných míst ve výsledku určeným parametrem udávajícím faktor měřítka. Pokud parametr označující faktor měřítka není zadán, použije se výchozí faktor měřítka
bcsub() Podobné jako bcadd(), až na to, že vrací výsledek odečtení druhého parametru od prvního
bcmui() Podobné jako bcadd(), až na to, že vrací výsledek vynásobení svých parametrů
bcdiv() Podobné jako bcadd(), až na to, že vrací výsledek dělení prvního parametru druhým
bcmod() Vrátí modul (zbytek) dělení prvního parametru druhým. Protože vrácená hodnota je celé číslo, funkce nepřijímá parametr označující faktor měřítka
bcpow() Zvýší první parametr na výkon určený druhým parametrem. Počet desetinných míst ve výsledku je určen měřítkovým faktorem, pokud je zadán
bcsqrt() Vrátí druhou odmocninu parametru s počtem desetinných míst určeným hodnotou volitelného měřítka
bcscale() Nastaví výchozí faktor měřítka pro následná volání funkce BC

Většina těchto funkcí bere jako poslední parametr volitelný faktor měřítka (celé číslo), který určuje, kolik desetinných míst by měl mít výsledek. Pokud tento parametr není zadán, použije se výchozí faktor měřítka jako faktor měřítka, který lze nastavit voláním funkce bcscale(). Výchozí hodnotu pro tuto výchozí hodnotu (tj. hodnotu, která se použije, pokud skript nevolá bcscale()) lze také nastavit v inicializačním souboru php.ini.

Níže je uveden příklad použití libovolné přesné funkce k přesnému provádění celočíselných aritmetických operací. Provedení následujícího kódu:

PHP kód for ($x = 1; $x< 25; $x++) { echo "$xx $= ".bcpow($x, $x)."
"; }
Přesný výpočet astronomických veličin pomocí BC funkcí

Pokud by se pro tyto výpočty použil běžný typ celého čísla PHP, pak by k přetečení celého čísla došlo dlouho před koncem výpočtu, takže zbytek cyklu by provedl výpočty k získání přibližného čísla s pohyblivou řádovou čárkou.

Pole Zpracování formuláře 1 2 3 4 5 6 7 8 9 10

Logické operace existují ve všech programovacích jazycích a PHP není výjimkou. Kromě prostého dělení, násobení, sčítání nebo odčítání existují také celočíselná a zbytková dělení, o kterých si nyní povíme a také je rozebereme na podrobných příkladech.

Celočíselné dělení je výstup celočíselné části z dělení. Pokud například vydělíme 5 2, dostaneme 2, nikoli 2,5.

Se zbytkovým dělením je vše jinak. Toto je výstup zbytku při dělení celým číslem. Například dělením stejných pěti nedostanete 2, ale 1, protože dělením 5 2 dostaneme 2 a zbytek je 1.

Jak udělat celočíselné dělení v PHP

Například v Pythonu se toto dělení provádí pomocí jednoduchého operátoru: "//".

A v PHP to nebude tak snadné, ale přesto tento proces nevyžaduje super znalost jazyka.

Uveďme příklad, jak to lze implementovat.

V PHP verze sedm vypadá funkce takto:

Ve starší verzi vypadá stejná funkce takto:

Existuje také metoda pro všechny verze:

Jak se přihlásit?

Vezměme si například první funkci, všechny ostatní se provádějí přibližně stejně.

$vysledek = intdiv(10, 3); echo $výsledek;

Dělení zbytku v PHP

Chcete-li zobrazit celý zbytek dělení v PHP, jednoduše použijte operátor "%".

$i = 10 % 3; echo $i;

Jak vidíme, vše je docela jednoduché a nevyžaduje dlouhé vysvětlování.

Kde se dá použít?

Znalost celočíselného dělení v PHP se bude velmi hodit, pokud potřebujete porovnat dvě čísla, vytvořit obrácené číslo (oblíbené cvičení), nebo například program s názvem FizzBuzz. Jeho podstatou je, že musíte napsat cyklus od 1 do 100, který každé číslo vydělí 3 a 5. Pokud má číslo dělené 3 zbytek 0, pak napíšeme Fizz, pokud je děleno 5, pak Buzz a jestliže , dělíme jak 5, tak 3, zbytek je 0, pak zapíšeme FizzBuzz. Jedná se o velmi oblíbený pohovorový úkol. Pokud jste ji absolvovali sami, můžete být na sebe hrdí.

Nebo například z čísla 452 musíme odvodit všechna jeho čísla (4, 5, 2).

Závěr

Samozřejmě, že celočíselné a zbytkové dělení jsou užitečné a nejsou tak pohodlné jako v Pythonu, ale přesto jsou důležité.

Nyní jste o krok blíže k tomu, abyste se naučili programovací jazyk PHP, a v budoucnu budete ještě blíže, pokud budete stejně tvrdě pracovat na překonávání výzev.

Všechny základní matematické operace jsou dostupné v PHP. Jako operandy lze použít jak celá čísla, tak reálná čísla.

Tabulka zobrazuje seznam aritmetických operátorů:
OperátorPodepsatPopis
Přidání + Součet dvou hodnot
Odčítání - Odečtení jedné hodnoty od druhé
Násobení * Násobení dvou hodnot
Divize / Dělení jedné hodnoty druhou
Získání zbytku divize % Dělení jedné hodnoty druhou a vrácení zbytku (dělení modulo)
Přírůstek ++ Zkratka pro zvýšení čísla o jednu
Dekrementovat -- Zkratka pro zmenšení čísla o jednu
Unární negace - Přeměna kladného čísla na záporné nebo záporného čísla na kladné

Operátory odčítání, násobení, dělení, modulo a sčítání

Operátory odčítání, násobení, dělení, modulo a sčítání se používají stejně jako v matematice. Zde stojí za to věnovat pozornost operátorům rozdělení a modulo.

Operátor dělení (" / ") vrací číslo s plovoucí desetinnou čárkou, pokud obě hodnoty nejsou celá čísla (nebo řetězce, které jsou převedeny na celá čísla), která jsou dělená celým číslem, v takovém případě vrátí celočíselnou hodnotu.

vysledek2 = $vysledek2
"; echo "výsledek3 = $výsledek3
vysledek4 = $vysledek4"; ?>

Při dělení modulo jsou operandy převedeny na celá čísla (s odstraněnou zlomkovou částí) před zahájením operace. Výsledek operace % zbytku dělení bude mít stejné znaménko jako dividenda:

Unární negace

Unární operátor negace je označen znaménkem „-“ a obrací význam svého jediného operandu:

V tomto případě závorky nejsou potřeba, protože unární negace má nejvyšší prioritu, ale pomáhají uspořádat kód tak, aby bylo jasné, že se přidávají čísla -5 a 4.

Přírůstek

Operátor přírůstku je označen znaménkem ++ a lze jej umístit na obě strany operandu, se kterým pracuje. Zvyšuje tuto hodnotu o jednu, stejně jako přičtení jedničky k hodnotě. Skutečný výsledek závisí na tom, zda byl operátor použit před nebo po operandu, se kterým byl použit. Tento operátor se často používá s proměnnými a často se to děje uvnitř smyček (o smyčkách bude řeč později).

Předponová forma přírůstku

Formulář předpony- to je, když je operátor inkrementace umístěn před operand, tato forma zápisu znamená, že inkrement se provede jako první: zvýší hodnotu operandu o jedničku a teprve potom se provede zbytek instrukce:

Postfixová forma přírůstku

Postfixový formulář se zapisuje trochu jinak - přírůstek je v tomto případě umístěn za operandem. V postfixové notaci vrací první použití operandu jeho aktuální hodnotu, teprve poté bude hodnota zvýšena o jedničku:

Dekrementovat

Operátor dekrementace se označuje znaménkem -- a na rozdíl od operátoru inkrementace hodnotu svého operandu o jedna snižuje, nikoli zvyšuje. Dekrementace také umožňuje zápis předpony a přípony:

Logické operace existují ve všech programovacích jazycích a PHP není výjimkou. Kromě prostého dělení, násobení, sčítání nebo odčítání existují také celočíselná a zbytková dělení, o kterých si nyní povíme a také je rozebereme na podrobných příkladech.

Celočíselné dělení je výstup celočíselné části z dělení. Pokud například vydělíme 5 2, dostaneme 2, nikoli 2,5.

Se zbytkovým dělením je vše jinak. Toto je výstup zbytku při dělení celým číslem. Například dělením stejných pěti nedostanete 2, ale 1, protože dělením 5 2 dostaneme 2 a zbytek je 1.

Jak udělat celočíselné dělení v PHP

Například v Pythonu se toto dělení provádí pomocí jednoduchého operátoru: "//".

A dovnitř PHP nebude to tak snadné, ale přesto tento proces nevyžaduje super znalost jazyka.

Uveďme příklad, jak to lze implementovat.

V PHP sedmá verze funkce vypadá takto:

Intdiv();

Ve starší verzi vypadá stejná funkce takto:

Existuje také metoda pro všechny verze:

Podlaha();

Jak se přihlásit?

Vezměme si například první funkci, všechny ostatní se provádějí přibližně stejně.

$vysledek = intdiv(10, 3); echo $výsledek;

Dělení zbytku v PHP

Chcete-li zobrazit celý zbytek dělení v PHP Stačí použít operátor "%".

$i = 10 % 3; echo $i;

Jak vidíme, vše je docela jednoduché a nevyžaduje dlouhé vysvětlování.

Kde se dá použít?

Znalost celočíselného dělení PHP bude velmi užitečné, pokud potřebujete porovnat dvě čísla, vytvořit obrácené číslo (oblíbené cvičení) nebo například program s názvem FizzBuzz. Jeho podstatou je, že musíte napsat cyklus od 1 do 100, který každé číslo vydělí 3 a 5. Pokud má číslo dělené 3 zbytek 0, pak napíšeme Fizz, pokud je děleno 5, pak Buzz a jestliže , dělíme jak 5, tak 3, zbytek je 0, pak zapíšeme FizzBuzz. Jedná se o velmi oblíbený pohovorový úkol. Pokud jste ji absolvovali sami, můžete být na sebe hrdí.

Nebo například z čísla 452 musíme odvodit všechna jeho čísla (4, 5, 2).

Závěr

Samozřejmě, že celočíselné a zbytkové dělení jsou užitečné a nejsou tak pohodlné jako v Pythonu, ale přesto jsou důležité.

Nyní jste o krok blíže k učení programovacího jazyka PHP a v budoucnu se ještě více sblížíte, když budete stejně pilně překonávat obtíže.

Operace s PHP proměnnými (operátory)

Existují různé skupiny pro implementaci.

Operátor je něco, co se skládá z jedné nebo více hodnot (výrazů v programátorském žargonu), které lze vyhodnotit jako novou hodnotu (celý konstrukt lze tedy považovat za výraz). Z toho vyplývá, že funkce nebo jakékoli jiné konstrukce, které vracejí hodnotu (např. tisk()) jsou operátory, na rozdíl od všech ostatních jazykových konstrukcí (např. echo()), které nic nevrací.

Aritmetické operace v PHP

Pamatujete si školní základy aritmetiky? Operátoři popsané níže fungují stejným způsobem.

Operátor dělení ("/") vždy vrací skutečný typ, i když obě hodnoty byly celá čísla (nebo řetězce, které se převádějí na celá čísla). V opačném případě bude výsledek zlomkový.

Operace výpočtu zbytku dělení " % " funguje pouze s celými čísly, takže jeho použití na zlomky může vést k nežádoucím výsledkům.

Je možné použít závorky. Přednost určitých matematických operací před jinými a změna priorit při použití závorek v aritmetických výrazech se řídí obvyklými pravidly matematiky.

Operace zvýšení a snížení

PHP, stejně jako C, podporuje prefixové a postfixové inkrementační a dekrementační operátory.

Postfixové inkrementační a dekrementační operátory

Stejně jako v C tyto operátory zvyšují nebo snižují hodnotu proměnné a ve výrazu vracejí hodnotu proměnné $a před změnou. Například:

$a=10;
$b=$a++;
echo "a=$a, b=$b"; // Vytiskne a=11, b=10

Jak vidíte, nejprve proměnná $ b hodnota přiřazená proměnné $a, a teprve potom byl zvýšen poslední. Výraz, jehož hodnota je přiřazena proměnné $ b, může být obtížnější - v každém případě přírůstek $a se stane až po jeho vyčíslení.

Předpona operátorů inkrementace a dekrementace

Existují také operátory inkrementace a dekrementace, které jsou uvedeny spíše než za názvem proměnné. Podle toho po změně vrátí hodnotu proměnné. Příklad:

$a=10;
$b=--$a;
echo "a=$a, b=$b"; // Vytiskne a=9, b=9

Operace inkrementace a dekrementace se v praxi používají velmi často. Například se vyskytují téměř v jakémkoli cyklu pro .

echo "

Přírůstek Postfixu

" ;
$a = 5;
echo "Musí být 5: ". $a++ . "
\n" ;

\n" ;

Echo "

Přírůstek předpony

" ;
$a = 5;
echo "Mělo by být 6: ". ++ $a . "
\n" ;
echo "Mělo by být 6: ". $a . "
\n" ;

Echo "

Postfixový dekrement

" ;
$a = 5;
echo "Musí být 5: ". $a -- . "
\n" ;

\n" ;

Echo "

Dekrementace předpony

" ;
$a = 5;
echo "Musí být 4: ". -- $a . "
\n" ;
echo "Musí být 4: ". $a . "
\n" ;
?>

Řetězcové operace

PHP má dva operátory pro práci s řetězci. První je operátor zřetězení ("."), který vrací zřetězení levého a pravého argumentu. Druhým je operátor přiřazení se zřetězením, který připojuje pravý argument k levému. Uveďme konkrétní příklad:

$a = "Ahoj" ;
$b = $a . "Svět!" ; // $b obsahuje řetězec "Hello World!"

$a = "Ahoj" ;
$a .= "Svět!" ; // $a obsahuje řetězec "Hello World!"
?>

Bitové operace

Tyto operace jsou navrženy tak, aby provozovaly (nastavovaly/odstavovaly/kontrolovaly) skupiny bitů v celé proměnné. Bity celého čísla nejsou nic jiného než jednotlivé číslice stejného čísla zapsané v binární číselné soustavě. Například v binárním systému by číslo 12 vypadalo jako 1100 a 2 by vypadalo jako 10, takže výraz 12|2 nám vrátí číslo 14 (1110 v binárním zápisu). Pokud proměnná není celé číslo, pak je
nejprve zaokrouhlit a poté se na něj použijí následující operátory.

K reprezentaci jednoho čísla se používá 32 bitů:

  • 0000 0000 0000 0000 0000 0000 0000 0000 je nula;
  • 0000 0000 0000 0000 0000 0000 0000 0001 je 1;
  • 0000 0000 0000 0000 0000 0000 0000 0010 je 2;
  • 0000 0000 0000 0000 0000 0000 0000 0011 je 3;
  • 0000 0000 0000 0000 0000 0000 0000 0100 je 4;
  • 0000 0000 0000 0000 0000 0000 0000 0101 je 5;
  • 0000 0000 0000 0000 0000 0000 0000 1111 je 15;

Bitové operátory:

Příklad název Výsledek
$a & $b Bitové "a" Jsou nastaveny pouze ty bity, které jsou nastaveny v $a a $b.
$a | $ b Bitové "nebo" Bity, které jsou nastaveny buď v $a nebo $b, jsou nastaveny.
$a^$b Exkluzivní popř Jsou nastaveny pouze ty bity, které jsou nastaveny buď v $a only nebo $b only
~$a Negace Ty bity, které nejsou nastaveny v $a, jsou nastaveny a naopak.
$a<< $b Shift doleva Všechny bity proměnné $a jsou posunuty o $b pozic doleva (každá pozice znamená "násobení 2")
$a >> $b Shift vpravo Všechny bity proměnné $a jsou posunuty o $b pozic doprava (každá pozice znamená "dělení 2")

Srovnávací operace

Porovnávací operátory, jak jejich název napovídá, umožňují porovnávat dvě hodnoty.

Tyto operace jsou svým způsobem jedinečné, protože bez ohledu na typy jejich argumentů vždy vrátí jednu ze dvou věcí: Nepravdivé nebo skutečný. Porovnávací operace porovnávají dvě hodnoty mezi sebou, a pokud je podmínka pravdivá, vrátí se skutečný, A když ne- Nepravdivé.

PHP umožňuje porovnávat pouze skalární proměnné. Pole a objekty nelze v PHP porovnávat. Nelze je ani porovnat na rovnost (pomocí operátoru ==), ale PHP při provádění takové operace nevydává varování. Když jsem se tedy jednou divil, proč při jejich porovnávání používají dvě zcela odlišná pole == najednou se ukáže, že je to stejné, nezapomeňte, že před porovnáním jsou oba operandy převedeny na slovo pole, který je následně porovnán.

Podrobnosti viz Porovnání pole.

Srovnávací operátory:

Příklad název Výsledek
$a == $b Rovná se SKUTEČNÝ pokud $a je rovno $b.
$a === $b Identicky rovné SKUTEČNÝ pokud $a je rovno $b a má stejný typ. (Přidáno v PHP 4)
$a != $b Ne rovné SKUTEČNÝ jestliže $a se nerovná $b.
$a<>$ b Ne rovné SKUTEČNÝ jestliže $a se nerovná $b.
$a !== $b Identické není stejné SKUTEČNÝ pokud $a není rovno $b nebo pokud jsou různých typů (Přidáno v PHP 4)
$a< $b Méně SKUTEČNÝ pokud $a je striktně menší než $b.
$a > $b Více SKUTEČNÝ pokud $a je přísně větší než $b.
$a<= $b Méně nebo stejně SKUTEČNÝ pokud $a je menší nebo rovno $b.
$a >= $b Více nebo stejné SKUTEČNÝ pokud $a je větší nebo rovno $b.

Logické operace

Logické operátory jsou určeny výhradně pro práci s booleovskými výrazy a také se vracejí Nepravdivé nebo skutečný.

Zde je tabulka logických operátorů PHP:

Je třeba poznamenat, že vyhodnocování logických výrazů obsahujících takové operátory probíhá vždy zleva doprava, a pokud je výsledek již zřejmý (např. nepravda&&něco vždy dává Nepravdivé), pak jsou výpočty ukončeny, i když výraz obsahuje volání funkcí. Například v operátoru $logic = 0&&(time()>100); standardní funkce čas() nikdy nebude voláno.

Buďte opatrní s logickými operacemi – nezapomeňte na zdvojení postavy. Upozorňujeme, že např. | A || - dva zcela různí operátoři, z nichž jeden může potenciálně vrátit libovolné číslo a druhý - pouze Nepravdivé A skutečný.

Operátory increment (++) a decrement (--) nefungují s booleovskými proměnnými.

Ekvivalenční operátory

V PHP počínaje PHP4 existuje identický operátor porovnání - trojité rovnítko === ,
nebo šekového operátora. PHP je poměrně tolerantní vůči řetězcům, které jsou implicitně převedeny na čísla, a naopak.
Například následující kód vypíše, že hodnoty proměnných jsou stejné:

$a=10;
$b="10";

A to přesto, že proměnná $a představuje číslo a $ b- linka. Nyní se podívejme na trochu jiný příklad:

$a=0; // nula
$b=""; // prázdný řádek
if($a==$b) echo "a a b se rovnají"; // Vypíše "a a b jsou stejné"

Ačkoli $a A $ b zjevně nejsou stejné ani v obvyklém slova smyslu, skript bude deklarovat, že jsou stejné. Proč se tohle děje? Jde o to, že pokud lze jeden z operandů logického operátoru interpretovat jako číslo, pak se oba operandy považují za čísla. V tomto případě se prázdný řádek změní na 0 , který je následně porovnán s nulou. Není divu, že provozovatel echo funguje.
Problém je řešen operátorem ekvivalence === (trojnásobná rovnost). Neporovnává pouze dva výrazy, ale také jejich typy. Přepišme náš příklad pomocí tohoto operátoru.

říct přátelům