Grundläggande matematik används mycket under programmeringen. Vi behöver ofta jämföra, lägga till, multiplicera, subtrahera och dela upp olika värden när du skriver kod.
Ibland kan de matriser som krävs i ett program vara mer involverade. Du kan behöva arbeta med logaritmiska, trigonometriska eller exponentiella funktioner. I denna handledning diskuterar jag hur du använder var och en av dessa funktioner i PHP, med exempel.
Denna handledning kommer att introducera dig till de inbyggda matematiska funktionerna i PHP för att göra trigonometri, exponentiation och logaritmberäkningar. Vi tittar också på avrundning och genererar slumptal.
Du kan beräkna värdet av sinus, cos och tangent av olika vinklar ges i radianer med sin ($ vinkel)
, cos ($ vinkel)
, och tan ($ vinkel)
. De återvänder alla flyta
värden, och den vinkelmått som överförs till dem ligger i radianer.
Det innebär att när du bara beräknar tan (45)
, du kommer inte att få 1 som utgång, eftersom du faktiskt kommer att beräkna värdet på tangent vid 45 radianer, vilket är cirka 2578 grader. Lyckligtvis har PHP två mycket användbara funktioner för att konvertera radianer till grader och vice versa. Dessa funktioner är rad2deg ()
och deg2rad ()
. Så, om du faktiskt vill beräkna värdet på tangenten på 45 grader, måste du skriva tan (deg2rad (45))
.
Det är anmärkningsvärt att det inte finns någon direkt PHP-funktion för att beräkna värdet av COSEC ()
, sek ()
, eller spjälsäng()
. Dessa värden är dock bara reciprocals av synd()
, cos ()
, och solbränna()
, så att du fortfarande kan beräkna deras värden indirekt.
Du kan också göra inversen och beräkna vinkeln där en trigonometrisk vinkel har ett visst värde. Dessa funktioner kallas som i()
, Acos ()
, och en bränna()
. En sak du måste komma ihåg är att värdena för synd och cos aldrig kan gå utöver intervallet -1 till 1 för någon vinkel. Detta innebär att som i()
och Acos ()
kan bara acceptera värden i intervallet -1 till 1 som giltiga argument. Ett värde utanför detta intervall ger dig NaN.
Trigonometri har många tillämpningar som att bestämma projektilens bana eller höjderna och avstånden för olika objekt, så att ha tillgång till dessa funktioner är definitivt till hjälp om du skriver kod som simulerar dessa situationer.
Dessa funktioner är också mycket användbara när du vill rita olika element med hjälp av radiella och vinkelvärden. Låt oss säga att du vill rita ett mönster av cirklar runt en större cirkel på ett jämnt avstånd. Om du har läst PHP GD Shapes handledning på Envato Tuts +, kommer du säkert ihåg att det med teorier kan krävas att du skickar koordinater i form av x, y-koordinater, men att rita cirkulära mönster är enklare med polära koordinater.
Med hjälp av dessa trigonometriska funktioner hjälper du dig att rita önskade siffror med synd()
och cos ()
att omvandla polära koordinater till kartesisk form. Här är ett exempel:
Följande bild visar slutresultatet av ovanstående PHP-kod.
PHP har också vissa exponentiella och logaritmiska funktioner. De exp ($ value)
funktionen kommer att returnera konstanten e uppvuxen till floatens kraft $ värde
. På samma sätt kan du beräkna logaritmen för ett givet nummer till vilken som helst bas med hjälp av logga ($ arg, $ bas)
fungera. Om $ bas
utelämnas logaritmen beräknas med hjälp av den naturliga basen e. Om du vill beräkna logaritmen för ett tal till bas 10 kan du helt enkelt använda funktionen log10 ($ arg)
.
En annan funktion som du kanske tycker är användbar är pow ($ bas, $ exp)
, som återvänder $ bas
uppvuxen till kraften av $ exp
. Vissa av er kanske föredrar att använda **
operatör. Uttrycket $ A ** $ b
kommer att ge samma resultat som pow ($ a, $ b)
. Du kan dock få felaktiga resultat i vissa situationer med $ A ** $ b
. Till exempel, -1 ** 0,5
kommer att ge dig -1, vilket är felaktigt. Beräkning av samma uttryck med pow (-1, 0,5)
kommer att ge rätt värde, NaN.
Det finns också många andra viktiga matematiska funktioner. Du kan runda fraktioner eller decimaltal upp till närmaste heltal med hjälp av ceil (float $ värde)
fungera. Detta kommer att konvertera både 2,1 och 2,9 till 3. På samma sätt kan du runda fraktioner eller decimaltal ner till närmaste heltal med hjälp av golv (float $ värde)
fungera. Det kommer att ändra både 2,1 och 2,9 till 2.
Dessa funktioner är bra för att enkelt runda upp resultaten av olika beräkningar. Låt oss säga att du behöver veta hur många personer en sal kan rymma utifrån sitt område. Ditt slutliga svar efter divisionen kommer troligen att vara ett decimaltal, men du kan inte dela folk i fraktioner, så det rätta svaret skulle vara golvvärdet av det beräknade värdet.
Du vill ofta runda ett tal upp eller ner till närmaste heltal. Till exempel kanske du vill ändra 2,1 till 2 men 2,9 till 3. Detta kan göras enkelt med hjälp av round ($ värde, $ precision, $ mode)
fungera. De $ precision
Parametern bestämmer antalet decimaler att runda till. Standardvärdet på 0 kommer helt enkelt att returnera heltal. Den tredje $ -funktion
Parametern används för att bestämma vad som händer om det nummer du vill runda ligger exakt i mitten. Du kan använda den för att ange om 3,5 ska ändras till 3 eller 4.
PHP har också två funktioner som heter min ($ värden)
och max ($ värden)
för att hjälpa dig att bestämma de lägsta och högsta värdena i en uppsättning eller en uppsättning tal. Dessa funktioner kan acceptera olika typer av parametrar som två arrays och en sträng. Du bör titta på dokumentationen för att se hur de skulle jämföras.
Du kan också utföra heltalsuppdelning i PHP med hjälp av intdiv ($ dividend, $ divisor)
fungera. I detta fall returneras endast den integrerade delen av kvoten efter en uppdelning. På samma sätt kan du också få resten eller modulo efter uppdelningen av två argument med hjälp av fmod ($ dividend, $ divisor)
fungera. Det returnerade värdet kommer alltid att vara mindre än $ divisor
i storlek.
Det finns några andra användbara funktioner som is_nan ($ value)
, is_finite ($ value)
och is_infinite ($ val)
som kan användas för att bestämma om värdet är ett tal och, om det är ett tal, om det är ändligt eller oändligt. Kom ihåg att PHP anser att ett värde som är för stort för att passa i en float är oändligt. Så is_finite ()
kommer att återvända Sann
för 100 factorial men falsk
för 1000 factorial.
Slumpmässiga siffror visar sig vara ganska användbara i ett antal situationer. Du kan använda dem för att generera "slumpmässiga" data för din ansökan eller att kasta fiendens instanser i spel etc. Det är väldigt viktigt att komma ihåg att ingen av de funktioner vi diskuterar i det här avsnittet genererar kryptografiskt säkra slumptal. Dessa funktioner är endast avsedda att användas i situationer där säkerhet inte är ett problem, som att visa slumpmässiga hälsningstexter för att upprepa besökare eller för att generera slumpmässiga statistiska data.
Funktionerna rand ($ min, $ max)
och mt_rand ($ min, $ max)
kan generera positiva slumpmässiga heltal mellan givna värden inklusive $ min
och $ max
värde. När funktionerna kallas utan några parametrar genererar de slumpmässiga tal mellan 0 och getrandmax ()
. Du kan eko
värdet av getrandmax ()
för att se det maximala möjliga slumptal som dessa funktioner kan generera på din plattform.
Funktionen mt_rand ()
är 4 gånger snabbare än rand()
och returnerar falskt om $ max
är mindre än $ min
. Börja från PHP 7.1.0, rand()
har faktiskt blivit ett alias av mt_rand ()
. Den enda skillnaden är det rand()
ger fortfarande inget fel om $ max
är mindre än $ min
för att upprätthålla bakåtkompatibilitet.
Här är en slinga för att generera slumpmässiga värden mellan 0 och 100 miljon gånger. Som du kan se genereras värdena 0, 50 och 100 cirka 10 000 gånger med svaga fluktuationer.
Båda dessa funktioner har också egna sederfunktioner som heter srand ()
och mt_srand ()
att tillhandahålla ett frö för slumptalsgeneratorerna. Du bör bara komma ihåg att du bara ringer srand ()
och mt_srand ()
en gång i ditt program. Ringer dem före varje samtal till rand()
och mt_rand ()
kommer att ge dig samma "slumpmässiga" nummer varje gång.
PHP levereras med många inbyggda funktioner som bör uppfylla alla dina dagliga beräkningsbehov. Du kan använda dessa funktioner för att göra lite mer komplicerade beräkningar som GCD, LCM och factorials själv.
Det finns bara några saker du bör komma ihåg när du använder dessa funktioner. Till exempel är värdet returnerat av funktioner som golv()
och ceil ()
är ett heltal, men det är fortfarande en flottör. På samma sätt förväntar alla trigonometriska funktioner att deras vinklar ges i radianer. Du får felaktiga resultat om du skickar dem ett vinkelvärde som du ville bli behandlad som en gradmått. Så se till att du kontrollerar returvärdet och förväntat argument för alla dessa funktioner i dokumentationen.