Php modulo-jako. Toiminnot PHP:ssä

Tämä aihe on tärkeä, koska lähes kaikki sovellukset sisältävät jonkinlaisen laskennallisen toiminnan. Numeroiden toiminnot on esitetty alla olevassa taulukossa.

Aritmeettiset operaatiot php:ssä

Mielestäni nämä operaattorit eivät tarvitse paljon selityksiä. Annan esimerkin kunkin niiden käytöstä:

\$num2 = ". $num2; //Esimerkki summauksesta: kaiku"
\$num1 + \$num2 = ". ($num1 + $num2); //Esimerkki vähentämisestä: kaiku"
\$num1 - \$num2 = ". ($num1 - $num2); //Kertoesimerkki: kaiku"
\$num1 * \$num2 = ". $num1 * $num2; //Esimerkki jaosta: kaiku"
\$num1: \$num2 = ". $num1 / $num2; //Esimerkki jaon jäännöksestä: kaiku"
\$num1 % \$num2 = ". $num1 % $num2; //Esimerkki lisäyksestä etuliitemuodossa: kaiku"
++\$num1 = ". ++$num1; //Nyt $num1 = 11 $num1=10; //määritetty alkuarvo //Esimerkki lisäyksestä etuliitemuodossa: kaiku"
\$num1++ = ". $num1++; //Nyt $num1 = 11 $num1=10; //määritetty alkuperäinen arvo //Esimerkki dekrementoinnista etuliitemuodossa: kaiku"
--\$num1 = ". --$num1; $num1=10; //Esimerkki dekrementoinnista etuliitteen jälkeisessä muodossa: kaiku"
\$num1-- = ". $num1--; ?>

Yllä olevan koodin suorittamisen tulos:

$num1 = 10
$num2 = 7
$num1 + $num2 = 17
$num1 - $num2 = 3
$num1 * $num2 = 70
$num1: $num2 = 1,42857142857
$num1 % $num2 = 3
+$num1 = 11
$num1++ = 10
--$num1 = 9
$num1-- = 10

Ero etuliitteen ja etuliitteen jälkeisen muodon välillä:

  • etuliitemuodossa(++ on muuttujan edessä) ensin kasvatetaan yhdellä ja tulos tulostetaan
  • etuliitteen jälkeisessä muodossa(++ tulee muuttujan jälkeen) tulos näytetään ensin, ja sitten sitä lisätään

Jotta voit ymmärtää eron paremmin, annan klassisen esimerkin, joka on annettu monissa ohjelmointioppikirjoissa:

//Määritä arvot muuttujille:$num1 = 10; $num2 = 7; $rez = ++$num1 + $num2; // tulokseksi tulee 18 kaiku"
\$rez = ". $rez; //Määritä $num1 alkuarvoon:$num1 = 10; $rez = $num1++ + $num2; // tulos on 17 kaiku"
\$rez = ". $rez; //Operaatioita ++ ja -- voidaan soveltaa myös merkkijonoihin$str = "abc"; kaiku"
".++$str; // tuloksena on merkkijono "abd" ?>

On syytä huomata, että kun lisäät muuttujia, voit käyttää kahdenlaisia ​​tietueita:

  • $num1 = $num1 + $num2 - säännöllinen sisäänpääsy;
  • $num1 += $num2 on lyhennelmä merkintä. Näiden operaatioiden tulos on sama. Pikakirjoitusta voidaan käyttää myös vähennys- ja kertolaskujen kanssa.

Vertailuoperaattorit php:ssä

Vertailuoperaattoreita käytetään olosuhteiden ja vastaavien testeissä. Tällä oppitunnilla emme kuitenkaan käsittele ehdolliset lausunnot, mutta harkitse vain vertailuoperaattoreita. Kaikki vertailuoperaattorit näkyvät alla olevassa taulukossa:

Tässä ei ole mitään monimutkaista, periaate on sama kuin matematiikassa. Ainoa erikoisuus on, että tosi on 1 ja epätosi on 0. Annetaan yksityiskohtainen esimerkki PHP:ssä:

//Määritä arvot muuttujille:$num1 = 10; $num2 = 7; echo "\$num1 > \$num2 = ". ($num1 > $num2); //saa 1 (10 > 7 - tosi) echo "\$num1 //get 0 (10 //Voit kirjoittaa yksinkertaisemmin: kaiku"
10 // 0 kaiku "
20 // 0 kaiku "
1 == 1 = ". (1 == 1); // 1 kaiku "
0 == \"\" = ". (0 == ""); // 1 kaiku "
0 === 0 = ". (0 === 0); // 1 kaiku "
0 === \"\" = ". (0 === ""); // 0 kaiku "
tosi = ". tosi; // 1 kaiku"
false = ". false; // 0 ?>

Huomautus:

  • Jos epätosi, 0 ei tulosteta
  • Vastaavuusoperaattori palauttaa 1 vain, jos täsmällinen vastaavuus löytyy. Esimerkiksi 0 == "" on tosi, mutta 0 === "" ei ole enää totta, koska tarkkaa vastaavuutta ei ole.

Ohjelmoijat, joiden on suoritettava arkaluonteisia numeerisia, tieteellisiä tai tilastollisia laskelmia, eivät todennäköisesti pidä web-skriptikieltä hyväksyttävänä ehdokkaana tähän tehtävään. Mutta yllä olevasta huolimatta PHP-kieli tarjoaa erinomaisen joukon toimintoja, jotka tarjoavat täydellisen ratkaisun useimpiin matemaattisiin ongelmiin, joita syntyy skriptien suoritusprosessissa webille. Lisäksi PHP tarjoaa joitain kehittyneempiä ominaisuuksia, kuten mielivaltaisen tarkkuuden aritmetiikkaa, hajautuskirjastoja ja kryptografisia kirjastoja.

PHP-kielen kehittäjät omaksuivat perustellun lähestymistavan eivätkä yrittäneet keksiä uudelleen tähän tarkoitukseen suunniteltuja pyöriä. Tosiasia on, että monet PHP:n tärkeimmistä matemaattisista funktioista ovat yksinkertaisesti kääreitä C-vastineidensa ympärille.

Matemaattiset operaatiot

Suurin osa PHP:n matematiikasta tehdään sisäänrakennettujen funktioiden muodossa operaatioiden sijaan. Vertailuoperaattoreiden lisäksi PHP tarjoaa viisi yksinkertaista aritmeettista operaattoria sekä joitain pikanäppäinoperaattoreita, joiden avulla voit rakentaa lyhyempiä lisäys-, vähennys- ja osoituslausekkeita.

Aritmeettiset operaatiot

Viisi aritmeettista perusoperaatiota sisältävät ne, jotka on yleisesti toteutettu missä tahansa nelifunktioisessa laskimessa, plus modulo (%). Taulukossa on lyhyt kuvaus aritmeettisista operaatioista:

Aritmeettiset operaatiot
Operaatio Kuvaus
+ Palauttaa kahden operandinsa arvojen summan
- Jos operandeja on kaksi, niin oikeanpuoleisen operandin arvo vähennetään vasemman arvosta. Jos on vain oikeanpuoleinen operandi, niin operaatio palauttaa kyseisen operandin arvon päinvastaisella etumerkillä
* Palauttaa kahden operandinsa arvojen tulon
/ Palauttaa liukulukutuloksen, kun vasemman operandin arvo jaetaan oikean operandin arvolla
% Palauttaa kokonaisluvun loppuosan jaettuna vasemman operandin arvolla oikean operandin itseisarvolla

Kun käytät kolmea ensimmäistä edellä kuvattua aritmeettista operaatiota (+, -, *) ohjelmassa, sinun tulee ottaa huomioon, että näitä operaatioita suoritettaessa tyypin eteneminen tapahtuu kaksinkertaisen tarkkuuden liukulukuarvoista kokonaislukuihin. Tämä tarkoittaa sitä, että jos operaation molemmat operandit ovat kokonaislukuja, niin tulos on kokonaisluku, ja jos ainakin yksi operandeista on kaksinkertainen tarkkuus liukuluku, niin tulos on kaksinkertainen tarkkuus liukuluku. määrä. Samantyyppinen eteneminen tapahtuu jakooperaatiota suoritettaessa; lisäksi on lisävaikutus, että tuloksesta tulee kaksinkertainen tarkkuus liukuluku, jos jakoa ei tehdä ilman jäännöstä (kokonaan).

PHP:n modulo (%) -operaatio hyväksyy kokonaislukuoperandit, ja kun tätä toimintoa sovelletaan kaksinkertaisen tarkkuuden liukulukuihin, nämä luvut muunnetaan ensin kokonaisluvuiksi (hylkäämällä murto-osa). Tällaisen operaation tulos on aina kokonaisluku.

Lisäys- ja vähennystoiminnot

Suuri osa PHP:n syntaksista on johdettu C:stä, ja C-ohjelmoijat ovat tunnettuja rakkaudestaan ​​lyhyyteen ja ovat siitä ylpeitä. C-kielestä otetut lisäys- ja vähennysoperaattorit mahdollistavat tiiviimmin esitettävän lausekkeet kuten $count = $count + 1, joita ohjelmissa yleensä esiintyy melko usein.

Lisäysoperaattorilla (++) lisätään yksi sen muuttujan arvoon, johon toiminto vaikuttaa, ja vähennysoperaattorilla (--) vähennetään yksi muuttujan arvosta.

Kummallakin näistä kahdesta operaatiosta on kaksi lajiketta - pääte(tässä muodossa operaatiomerkki sijoitetaan välittömästi operaatioon vaikuttavan muuttujan perään) ja etuliite(tässä muodossa operaatiomerkki sijoitetaan välittömästi sen muuttujan eteen, jota operaatio koskee). Molemmilla on sama sivuvaikutus muuttujan arvon muuttamisessa, mutta pääte- ja etuliiteoperaattorit palauttavat eri arvoja, kun niitä käytetään lausekkeina. Suffiksitoiminto toimii siten, että muuttujan arvoa muutetaan lausekkeen arvon palauttamisen jälkeen ja etuliitetoiminto toimii siten, että ensin muutetaan arvoa ja sitten palautetaan uusi arvo muuttujalle. Tämä ero voidaan havaita käyttämällä decrement- ja inkrement-operaattoreita osoitusoperaattoreissa:

PHP koodi $count = 0; $tulos = $count++; echo "$count++ inkrementin tulos: ".$tulos."
"; $count = 0; $result = ++$count; echo "++$count lisäyksen tulos: ".$tulos."
";

Seuraavat lauseet tuottavat seuraavan tulosteen selainikkunaan:

Kasvatustoiminnot

Tässä esimerkissä operaattori $tulos = $count++ on täysin sama kuin operaattorit:

PHP koodi $tulos = $count; $count = $count + 1;

Tämän lisäksi operaattori $result = ++$count vastaa seuraavia operaattoreita:

PHP koodi $count = $count +1; $tulos = $count;

Tehtäväoperaattorit

Lisäys- (ja dekrementointi) -operaattorit vähentävät koodin määrää, joka tarvitaan lisäämään yksi muuttujan arvoon, mutta eivät vähennä koodin määrää, joka määrittää muuttujalle tuloksen sen arvon lisäämisestä toiseen numeroon tai muiden aritmeettisten operaatioiden tuloksena. . Onneksi kaikilla viidellä aritmeettisella operaattorilla on vastaavat määritysoperaattorit (+=, -=, *=, /= ja %=), joiden avulla voit määrittää kyseisen muuttujan arvon aritmeettisen operaation tuloksen muuttujalle yhdessä lyhyt ilme. Esimerkiksi operaattori

PHP-koodi $count = $count * 3;

voidaan lyhentää nimellä

PHP-koodi $count *= 3;

Yksinkertaiset matemaattiset funktiot

Seuraava askel tehdä ohjelmasta monimutkaisempi kuin pelkkä aritmeettisia operaatioita käyttävä ohjelma on käyttää kaikenlaisia ​​funktioita. Funktioiden avulla voit suorittaa tehtäviä, kuten muuntamisen yhdestä numerotyypistä toiseen (katso Tietotyypit-artikkeli) ja pienimmän tai suurimman luvun etsimistä lukujoukosta. Seuraava taulukko näyttää yksinkertaisia ​​matemaattisia funktioita:

Yksinkertaiset PHP:n matemaattiset funktiot
Toiminto Kuvaus
lattia() Ottaa yhden todellisen parametrin (yleensä kaksinkertaisen tarkkuuden liukulukuluvun) ja palauttaa suurimman kokonaisluvun, joka on pienempi tai yhtä suuri kuin todellinen parametri (pyöristys alaspäin)
ceil() Tämän toiminnon nimi on lyhenne sanasta katto. Funktio ottaa yhden todellisen parametrin (yleensä kaksinkertaisen tarkkuuden liukulukuluvun) ja palauttaa pienimmän kokonaisluvun, joka on suurempi tai yhtä suuri kuin todellinen parametri (pyöristys ylöspäin)
pyöristää() Ottaa yhden todellisen parametrin (yleensä kaksinkertaisen tarkkuuden liukulukuluvun) ja palauttaa lähimmän kokonaisluvun
abs() Luvun itseisarvo. Jos ainoalla numeerisella todellisella parametrilla on negatiivinen arvo, funktio palauttaa vastaavan positiivisen luvun; jos todellinen parametri on positiivinen, funktio palauttaa itse todellisen parametrin
min() Hyväksyy minkä tahansa määrän numeerisia todellisia parametreja (mutta vähintään yhden) ja palauttaa pienimmän todellisista parametrien arvoista
max() Hyväksyy minkä tahansa määrän numeerisia todellisia parametreja (mutta vähintään yhden) ja palauttaa suurimman kaikista todellisista parametriarvoista

Esimerkiksi seuraavan lausekkeen tulos on 3, koska jokaisen funktion kutsulausekkeen arvo on myös 3:

PHP koodi $tulos = min(3, abs(-3), max(pyöreä(2.7), katto(2.3), floor(3.9)));

Luodaan satunnaislukuja

PHP-kieli käyttää kahta satunnaislukugeneraattoria (kutsutaan vastaavasti funktioiden avulla rand() Ja mt_rand()). Kukin näistä generaattoreista on liitetty kolmeen saman tarkoituksen toimintoon: alkuarvon asettamistoiminto ( srand() Ja mt_srand()), itse funktio satunnaisluvun saamiseksi ja funktio, joka ottaa näytteitä suurimmasta kokonaisluvusta, jonka generaattori voi palauttaa (( getrandmax() Ja mt_getrandmax())). Funktiot getrandmax() ja mt_getrandmax() palauttavat suurimman luvun, jonka rand() tai mt_rand() voi palauttaa, mikä on rajoitettu 32768:aan Windows-alustoilla.

Rand()-funktiossa käytetyn pseudvalinta voi riippua siitä, mihin kirjastoihin PHP-tulkki on käännetty. Sitä vastoin mt_rand()-generaattori käyttää aina samaa näennäissatunnaisten lukujen generointifunktiota (mt on lyhenne sanoista Mersenne Twister), ja mt_rand()-funktion operatiivisen dokumentaation kirjoittaja väittää, että tämä funktio on myös nopeampi ja " enemmän satunnainen" (salauksen näkökulmasta) kuin rand(). Meillä ei ole mitään syytä epäillä näiden lausuntojen totuutta, minkä vuoksi käytämme mieluummin mt_rand()-funktiota rand(:n) sijaan.

Käytettäessä joitain PHP:n versioita joillakin alustoilla näyttää siltä, ​​että rand()- ja mt_rand()-funktiot tuottavat näennäisesti järkeviä satunnaislukuja, jopa ilman siemenen asettamista. Mutta sellaiseen vaikutelmaan ei pidä luottaa. Ensinnäkin ohjelmia, jotka käyttävät funktioita satunnaislukujen luomiseen ilman alkuarvoa, ei voida helposti siirtää muille alustoille, ja toiseksi näiden toimintojen luotettavaa toimintaa ilman alkuarvoa ei taata.

Tyypillinen tapa asettaa siemenarvo mille tahansa PHP:n satunnaislukugeneraattorille (käyttäen mt_srand()- tai srand()-funktiota) on seuraava:

PHP koodi mt_srand((kaksois)mikroaika()*1000000);

Tämä operaattori asettaa generaattorin alkuarvon, joka on yhtä suuri kuin kuinka monta mikrosekuntia on kulunut tähän aikaan viimeisen kokonaisen sekunnin laskemisesta. (Tässä käskyssä oleva tuplaus on itse asiassa tarpeen, koska microtime()-funktio palauttaa merkkijonon, jota käsitellään kokonaislukuna kertolaskuoperaatiossa, mutta ei parametrien välityksessä funktiolle.) Suosittelemme, että lukija syöttää määritetty alustusoperaattori, vaikka tämän operaattorin tarkoitus ei olisi hänelle täysin selvä; Yksinkertaisesti tämän lauseen sijoittaminen jokaiselle PHP-sivulle, vain kerran, ennen vastaavan mt_rand()- tai rand()-funktion käyttöä, varmistaa, että aloituspiste muuttuu ja tuottaa siten eri satunnaissekvenssin joka kerta.

Tämän erityisen menetelmän alkuarvon asettamiseen harkitsivat syvästi ne asiantuntijat, jotka ymmärtävät täysin pseudosatunnaislukujen luomisen vivahteet, joten todennäköisesti se pysyy ikuisesti parempana kuin yksittäisen ohjelmoijan yritykset keksiä jotain. "hankalempaa".

Ilmeisesti nämä näennäissatunnaisia ​​lukuja luovat funktiot palauttavat vain kokonaislukuja, mutta satunnainen kokonaisluku tietyltä alueelta voidaan helposti muuntaa vastaavaksi liukulukuksi (esimerkiksi luku väliltä 0,0 - 1,0 mukaan lukien) käyttämällä lauseketta, kuten rand () / getrandmax(). Määritettyä aluetta voidaan sitten skaalata ja siirtää tarpeen mukaan. Alla on esimerkki:

PHP koodi // Oletetaan, että meidän on luotava satunnaisluku välillä 100,0 - 120,0 $random = 100,0 + 20,0 * mt_rand() / mt_getrandmax(); echo $random."
"; // Luo kokonaislukuja (100 - 120); echo round($random);

Yritä päivittää sivu tällä koodilla useita kertoja varmistaaksesi, että satunnaislukuja luodaan.

Matemaattiset vakiot

PHP-versiossa 4.0 dokumentaatiossa oli vain yksi matemaattinen vakio - M_PI (π:n arvo, joka esitetään kaksinkertaisena tarkkuuden liukulukuna). Ja PHP 4.0.2:sta alkaen otettiin käyttöön monia uusia vakioita. Useimmat näistä uusista vakioista liittyvät π:ään (tai sen kerrannaisiin), e:hen (tai sen kerrannaisiin) ja neliöjuuriin; lisäksi jotkut vakiot kuuluivat muihin tyyppeihin. Mutta myöhemmissä julkaisuissa, useista syistä, vakioiden luettelo pienennettiin jälleen suhteellisen pieneen määrään ennalta määritettyjä matemaattisia vakioita:

PHP matemaattiset vakiot
Jatkuva Kuvaus
M_PI π
M_PI_2 π/2
M_PI_4 π/4
M_1_PI 1/π
M_2_PI 2/π
M_2_SQRTPI 2/sqrt(π)
MINÄ e
M_SQRT2 sqrt (2)
M_SQRT1_2 1 / neliö (2)
M_LOG2E log2(e)
M_LOG10E loki(e)
M_LN2 loge (2)
M_LN10 loge (10)

Tarkistetaan numeromuotoa

PHP-kieli tarjoaa useita toimintoja, joiden avulla voit tarkistaa numeroiden oikean esityksen. Vaikka PHP:ssä ei ole tiukkaa tyyppitarkistusta, on suositeltavaa, että otat käyttöön joitakin näistä tarkistuksista koodissasi tarvittaessa, jotta voit ennustaa saamiesi tulosten ominaisuudet ja valita myös parhaan tavan käsitellä niitä.

Ensimmäinen ja yksinkertaisin tarkistus on käyttää toimintoa is_numeric(). Kuten useimmat muutkin testit, is_numeric-funktio palauttaa Boolen tuloksen – tosi, jos sille välitetty parametri on minkä tahansa tyyppistä numeerista dataa (etumerkillinen tai etumerkkitön, kokonaisluku tai liukuluku) tai matemaattinen lauseke, joka palauttaa kelvollisen numeerisen arvon.

Toimintojen käyttö is_int() Ja is_float Voit määrittää, onko luku kokonaisluku vai murtoluku. Kaksi muuta tarkistusta ovat hieman monimutkaisempia: toiminnot on_finite() Ja on_infinite() avulla voit suorittaa tarkalleen ne testit, jotka niiden nimet osoittavat (onko luku äärellinen vai ääretön). Mutta tarkasti ottaen arvoalue, jonka yli nämä funktiot ulottuvat, ei voi sisältää todellista ääretöntä (ja voidaanko edes tarkistaa, onko numerolla äärettömän suuri arvo?). Sen sijaan käytetään tietyssä järjestelmässä sallittujen liukulukuarvojen alueen rajoja.

Alla on esimerkki näiden toimintojen käytöstä:

PHP koodi on_numeerinen(4); // tosi on_numeerinen(25 - 6); // true is_numeric("25"); // tosi is_numeric("25 - 6"); // false is_int(4); // tosi is_int(4.2); // false is_int("4"); // false - tämä tarkistus on tiukempi kuin tarkistus is_numeric()-funktiolla is_float(4); // false is_float(4.0); // tosi is_float(M_PI); // totta

Numerojärjestelmien muuntaminen

Oletusarvoisesti PHP käyttää perusarvoa 10 muuntaakseen numeeriset arvot ulkoisesta sisäisestä esityksestä eteenpäin ja taaksepäin. Voit myös kertoa PHP-tulkille, että ulkoinen esitys käyttää 8-kantalukuja (tämän tekemiseksi sinun on syötettävä alku0. ), tai heksadesimaaliluvut, jotka on määritetty kantaluvussa 16 (tämän tekemiseksi sinun on lisättävä numeron eteen 0x).

Tietenkin, kun luvut on muunnettu ulkoisesta esityksestä sisäiseen, ne tallennetaan muistiin binäärimuodossa, ja kaikki perusaritmeettiset ja matemaattiset laskelmat suoritetaan itse käyttöjärjestelmässä Base 2:ssa. Lisäksi PHP-kieli tarjoaa useita toimintoja lukujen muuntamiseksi järjestelmän laskentakannasta toiseen. Yleiskatsaus näistä ominaisuuksista on alla olevassa taulukossa:

Numerojärjestelmän muunnosfunktiot
Toiminto Kuvaus
BinDec() Ottaa yhden merkkijonoparametrin, joka on binäärinen kokonaisluku (kantaluku 2) ja palauttaa tämän luvun 10 perusmerkkijonoesityksen
DecBin() Samanlainen kuin BinDec(), mutta muuntaa perusarvosta 10 perusarvoksi 2
lokakuu() Samanlainen kuin BinDec(), mutta muuntaa perusarvosta 8 perusarvoksi 10
joulukuuta() Samanlainen kuin BinDec(), mutta muuntaa perusarvosta 10 perusarvoksi 8
HexDec() Samanlainen kuin BinDec(), mutta muuntaa kannasta 16 perusarvoksi 10
DecHex() Samanlainen kuin BinDec(), mutta muuntaa perusarvosta 10 perusarvoksi 16
base_convert() Hyväksyy merkkijonoparametrin (joka edustaa muunnettavaa kokonaislukua) ja kaksi kokonaislukuparametria (alkuperäinen ja haluttu kantaluku). Palauttaa muunnettua lukua edustavan merkkijonon. Tällä rivillä numeroita, jotka ovat suurempia kuin 9 (10 - 35), edustavat merkit a-z. Sekä alkuperäisen että halutun pohjan on oltava välillä 2-36

Kaikki numerojärjestelmän muunnosfunktiot ovat erikoisfunktioita, jotka muuntavat numerot tietystä kannasta toiseen. Poikkeuksena on base_convert()-funktio, joka hyväksyy mielivaltaiset parametrit, jotka osoittavat alkuperäisen ja tuloksena olevan kantaluvun.

Huomaa, että kaikki numerojärjestelmän muunnosfunktiot hyväksyvät merkkijonoparametreja ja palauttavat merkkijonoarvot, mutta voit käyttää desimaalilukuparametreja ja luottaa PHP-tulkkiin suorittamaan tyyppimuunnoksen oikein. Toisin sanoen sekä DecBin("1234") ja DecBin(1234) tuottavat molemmat saman tuloksen.

Eksponentit ja logaritmit

PHP-kieli sisältää standardinmukaisia ​​eksponentiaalisia ja logaritmisia funktioita kahdessa lajikkeessa - 10- ja e-kantaisissa työskentelyssä (jotka näkyvät taulukossa).

PHP tarjoaa exp()-funktion, joka nostaa e:n tiettyyn potenssiin, mutta ei ole olemassa yhden parametrin funktiota, joka nostaa arvon 10 tiettyyn potenssiin. Voit kuitenkin käyttää sen sijaan pow()-funktiota, joka saa kaksi parametria, jolloin saadaan 10 ensimmäisenä parametrina.

Voit varmistaa, että eksponentiaaliset ja logaritmiset funktiot, joilla on sama kanta, ovat toistensa käänteisiä, tarkistamalla saatujen tulosten identiteetin tällä tavalla:

PHP koodi $test_449 = 449,0; $test_449 = pow(10, exp(log(log10($test_449)))); echo "testi_449 = $testi_449"; // testi_449 = 449

Trigonometriset funktiot

PHP-kieli tarjoaa vakiojoukon trigonometrisiä perusfunktioita, joista on yleistä tietoa taulukosta:

Trigonometriset funktiot
Toiminto Kuvaus
pi() Se ei ota parametreja ja palauttaa likimääräisen arvon π (3,1415926535898). Voidaan käyttää vaihtokelpoisesti M_PI-vakion kanssa
synti() Hyväksyy numeerisen parametrin radiaaneina ja palauttaa parametrin sinin kaksinkertaisena tarkkuuden liukulukulukuna
cos() Ottaa numeerisen parametrin radiaaneina ja palauttaa parametrin kosinin kaksinkertaisena tarkkuuden liukulukulukuna
tan() Hyväksyy numeerisen parametrin radiaaneina ja palauttaa parametrin tangentin kaksinkertaisena tarkkuuden liukulukulukuna
asin() Ottaa numeerisen parametrin ja palauttaa parametrin arsinin radiaaneina. Tulojen on oltava välillä -1 ja 1 (tämän alueen ulkopuolella olevia tuloja vastaanottava toiminto johtaa NAN-tulokseen). Tulokset vaihtelevat välillä -π/2 - π/2
acos() Ottaa numeerisen parametrin ja palauttaa parametrin kaarikosinin radiaaneina. Tulojen on oltava alueella -1 - 1 (tämän alueen ulkopuolella olevia tuloja vastaanottava toiminto johtaa NAN-tulokseen. Tulokset ovat välillä 0 - π
rusketus() Ottaa numeerisen parametrin ja palauttaa parametrin arktangentin radiaaneina. Tulokset vaihtelevat välillä -π/2 - π/2

Alla on esimerkki taulukon laatimisesta trigonometristen funktioiden laskemiseksi "standardi" kulmille:

PHP koodi funktio display_trigonometry($func_array, $input_array) ( // Function header echo " ";) kaiku""; // Tulosta loput taulukosta foreach($input_array as $input) ( echo " "; foreach($func_array as $func) ( echo " ";) kaiku"";) kaiku"
Merkitys/toiminto$func
".sprintf("%.4f",$tulo).""; printf("%4.4f", $func($input)); echo "
"; ) display_trigonometry(array("sin", "cos", "tan"), array(0, M_PI / 6, M_PI / 3, M_PI / 2, M_PI));

Esimerkki trigonometristen funktioiden käytöstä PHP:ssä

Syynä erittäin suurten (mutta ei äärettömien) tangenttiarvojen saamiseen on se, että nimittäjien pitäisi teoriassa olla nolla, mutta todellisuudessa ne ovat hieman erilaisia ​​kuin nolla pyöristysvirheiden vuoksi.

Mielivaltainen tarkkuuslaskenta (käyttämällä BC-funktioita)

Kokonaisluku- ja kaksinkertaisen tarkkuuden liukulukutyypit ovat täysin riittäviä useimpiin verkkokomentosarjan matemaattisiin ongelmiin, mutta jokainen näiden tyyppien edustaman arvon esiintymä vaatii kiinteän määrän tietokonemuistia, joten näiden tyyppien numeroesitysten koko ja tarkkuus asettaa väistämättä rajoituksia.

Tietysti näiden tietotyyppien tarkat arvoalueet voivat riippua palvelintietokoneen arkkitehtuurista, mutta kokonaislukuarvot voivat tyypillisesti vaihdella välillä -2 31 -1 - 2 31 -1, ja kaksinkertaiset liukulukuluvut voivat olla edustavat numeroita noin 13-14 desimaalin tarkkuudella. Toisaalta sellaisten ongelmien ratkaisemiseksi, jotka vaativat laajemman esitysalueen käyttöä tai suurempaa tarkkuutta, PHP tarjoaa mielivaltaisia ​​tarkkoja matemaattisia funktioita(kutsutaan myös BC-funktioiksi, jotka on nimetty Unix-pohjaisen mielivaltaisen tarkkuuden laskenta-apuohjelman mukaan).

Voi olla, että mielivaltaisia ​​tarkkuusfunktioita ei sisällytetä PHP-tulkin käännökseen, varsinkin jos käyttäjä teki käännöksen itse, koska tätä varten käyttäjän tulisi tietää, että konfigurointivaiheessa on tarpeen sisällyttää valintaruutu parametrit --enable-bcmath. Voit tarkistaa, ovatko määritetyt funktiot käytettävissä, kokeilemalla lauseketta bcadd("1","1"). Jos saat virheilmoituksen, jossa kerrotaan määrittelemättömästä funktiosta, sinun on määritettävä PHP-tulkki uudelleen ja käännettävä se uudelleen.

BC-funktiot käyttävät merkkijonoja kiinteän pituisten numerotyyppien sijaan parametreina ja palautusarvoina. Koska PHP:ssä merkkijonojen pituutta rajoittaa vain käytettävissä olevan muistin määrä, laskelmissa käytetyt numerot voivat olla minkä pituisia tahansa. Peruslaskelmat tehdään desimaalimuodossa ja ovat hyvin samanlaisia ​​kuin ne, jotka henkilö voi tehdä kynällä ja paperilla (jos hän voi työskennellä erittäin nopeasti ja olla kärsivällinen). BC-kokonaislukufunktiot ovat tarkkoja ja niiden avulla voit käyttää niin monta numeroa kuin tarvitaan, kun taas liukulukufunktiot suorittavat laskelmia tietyn desimaalin tarkkuudella. Yleistä tietoa BC-toiminnoista on alla olevassa taulukossa:

Mielivaltaiset matemaattiset tarkkuusfunktiot (BC-funktiot)
Toiminto Kuvaus
bcadd() Hyväksyy kaksi merkkijonoparametria, jotka edustavat numeroita, ja valinnainen kokonaislukuparametri, joka ilmaisee skaalaustekijän. Palauttaa kahden ensimmäisen parametrin summan merkkijonona, ja tuloksen desimaalien määrä määrittää skaalaustekijän osoittavan parametrin. Jos skaalaustekijää osoittavaa parametria ei ole määritetty, käytetään oletusskaalaustekijää
bcsub() Samanlainen kuin bcadd(), paitsi että se palauttaa tuloksen, kun toinen parametri vähennetään ensimmäisestä
bcmui() Samanlainen kuin bcadd(), paitsi että se palauttaa parametrien kertomisen tuloksen
bcdiv() Samanlainen kuin bcadd(), paitsi että se palauttaa ensimmäisen parametrin jakamisen toisella
bcmod() Palauttaa moduulin (jäännösosan) ensimmäisen parametrin jakamisesta toisella. Koska palautusarvo on kokonaisluku, funktio ei hyväksy skaalaustekijää osoittavaa parametria
bcpow() Nostaa ensimmäisen parametrin toisen parametrin määrittämälle teholle. Tuloksen desimaalien määrä määräytyy skaalaustekijän mukaan, jos sellainen on määritetty
bcsqrt() Palauttaa parametrin neliöjuuren valinnaisen skaalaustekijän arvon määräämällä desimaalipisteillä
bcscale() Asettaa oletusskaalaustekijän seuraaville BC-toiminnon kutsuille

Useimmat näistä funktioista ottavat viimeisenä parametrina valinnaisen skaalaustekijän (kokonaisluvun), joka määrittää kuinka monta desimaalipistettä tuloksessa tulee olla. Jos tätä parametria ei ole määritetty, oletusskaalaustekijää käytetään skaalaustekijänä, joka puolestaan ​​voidaan asettaa kutsumalla bcscale()-funktiota. Tämän oletusarvon oletusarvo (eli arvo, jota käytetään, jos komentosarja ei kutsu bcscale()) voidaan myös asettaa php.ini-alustustiedostossa.

Alla on esimerkki mielivaltaisen tarkkuusfunktion käyttämisestä kokonaislukuaritmeettisten toimintojen suorittamiseen tarkasti. Suoritetaan seuraava koodi:

PHP koodi for ($x = 1; $x< 25; $x++) { echo "$x$x= ".bcpow($x, $x)."
"; }
Tarkka tähtitieteellisten suureiden laskenta BC-funktioiden avulla

Jos näissä laskelmissa käytettäisiin tavallista PHP-kokonaislukutyyppiä, kokonaisluvun ylivuoto tapahtuisi kauan ennen laskennan päättymistä, joten silmukan loppuosa suorittaisi laskelmia saadakseen likimääräisen liukulukuluvun.

Taulukot Lomakkeiden käsittely 1 2 3 4 5 6 7 8 9 10

Loogisia operaatioita on kaikilla ohjelmointikielillä ja PHP ei poikkeus. Yksinkertaisen jakolaskun, kertolasku-, yhteen- tai vähennyslaskujen lisäksi on olemassa myös kokonaisluku- ja jäännösjakoa, joista puhumme nyt ja analysoimme niitä yksityiskohtaisten esimerkkien avulla.

Kokonaislukujako on jaon kokonaislukuosan tulos. Jos esimerkiksi jaamme 5:n kahdella, saamme 2, ei 2,5.

Jäännösjaon kanssa kaikki on toisin. Tämä on kokonaisluvulla jaetun jäännöksen tulos. Esimerkiksi jakamalla samat viisi, et saa 2, vaan 1, koska jakamalla 5 kahdella, saamme 2 ja loppuosa on 1.

Kuinka tehdä kokonaislukujako PHP:ssä

Esimerkiksi Pythonissa tämä jako tehdään yksinkertaisella operaattorilla: "//".

Ja sisään PHP tämä ei tule olemaan niin helppoa, mutta silti prosessi ei vaadi superkielen taitoa.

Otetaan esimerkki siitä, kuinka tämä voidaan toteuttaa.

SISÄÄN PHP seitsemännessä versiossa funktio näyttää tältä:

Intdiv();

Vanhemmassa versiossa sama toiminto näyttää tältä:

Kaikille versioille on myös menetelmä:

Lattia();

Kuinka hakea?

Otetaan esimerkiksi ensimmäinen toiminto, kaikki muut suoritetaan suunnilleen samalla tavalla.

$tulos = intdiv(10, 3); echo $tulos;

Loput jako PHP:ssä

Voit näyttää jaon kokonaisluvun jäännöksen PHP Riittää, kun käytät vain "%"-operaattoria.

$i = 10 % 3; kaiku $i;

Kuten näemme, kaikki on melko yksinkertaista eikä vaadi pitkiä selityksiä.

Missä sitä voidaan käyttää?

Kokonaislukujaon tuntemus PHP on erittäin hyödyllinen, jos sinun on verrattava kahta numeroa, luotava käänteinen luku (suosittu harjoitus) tai esimerkiksi ohjelma nimeltä FizzBuzz. Sen olemus on, että sinun on kirjoitettava jakso 1-100, joka jakaa jokaisen luvun 3:lla ja 5:llä. Jos luvulla jaettuna 3:lla on jäännös 0, kirjoitetaan Fizz, jos jaetaan 5:llä, niin Buzz ja Buzz ja jos , jakamalla sekä 5 että 3, jäännös on 0, kirjoitetaan FizzBuzz. Tämä on erittäin suosittu haastattelutehtävä. Jos suoritit sen itse, voit olla ylpeä itsestäsi.

Tai esimerkiksi meidän on johdettava kaikki sen luvut (4, 5, 2) luvusta 452.

Johtopäätös

Tietenkin kokonaisluku- ja jäännösjaot ovat hyödyllisiä ja melko yleisiä niitä ei ole niin kätevä käyttää kuin Pythonissa, mutta ne ovat silti tärkeitä.

Nyt olet askeleen lähempänä ohjelmointikielen oppimista PHP ja tulevaisuudessa tulet vielä läheisemmiksi, jos voitat vaikeudet yhtä ahkerasti.