在本教程中,您將學(xué)習(xí)如何在PHP中執(zhí)行數(shù)學(xué)運(yùn)算。
PHP具有多個(gè)內(nèi)置函數(shù),可幫助您執(zhí)行從簡(jiǎn)單的加法或減法到高級(jí)計(jì)算的所有操作。您已經(jīng)在PHP運(yùn)算符章節(jié)中了解了如何執(zhí)行基本的數(shù)學(xué)運(yùn)算。讓我們?cè)倏匆粋€(gè)實(shí)例:
<?php echo 7 + 3; // 輸出: 10 echo '<br>'; echo 7 - 2; // 輸出: 5 echo '<br>'; echo 7 * 2; // 輸出: 14 echo '<br>'; echo 7 / 2; // 輸出: 3.5 echo '<br>'; echo 7 % 2; // 輸出: 1 ?>測(cè)試看看?/?
每個(gè)數(shù)學(xué)運(yùn)算都有一定的優(yōu)先級(jí);通常,乘法和除法是在加法和減法之前執(zhí)行的。但是,括號(hào)可以更改此優(yōu)先級(jí)。不管操作的優(yōu)先級(jí)如何,總是首先對(duì)括號(hào)內(nèi)的表達(dá)式進(jìn)行求值,如以下示例所示:
<?php echo 5 + 4 * 10; // 輸出: 45 echo '<br>'; echo (5 + 4) * 10; // 輸出: 90 echo '<br>'; echo 5 + 4 * 10 / 2; // 輸出: 25 echo '<br>'; echo 8 * 10 / 4 - 2; // 輸出: 18 echo '<br>'; echo 8 * 10 / (4 - 2); // 輸出: 40 echo '<br>'; echo 8 + 10 / 4 - 2; // 輸出: 8.5 echo '<br>'; echo (8 + 10) / (4 - 2); // 輸出: 9 ?>測(cè)試看看?/?
在以下部分中,我們將學(xué)習(xí)一些內(nèi)置的PHP函數(shù),這些函數(shù)最常用于執(zhí)行數(shù)學(xué)運(yùn)算。
可以使用abs()函數(shù)找到整數(shù)或浮點(diǎn)數(shù)的絕對(duì)值,如以下示例所示:
<?php echo abs(5) . "<br>"; // 輸出: 5 (integer) echo abs(-5) . "<br>"; // 輸出: 5 (integer) echo abs(4.2) . "<br>"; // 輸出: 4.2 (double/float) echo abs(-4.2) . "<br>"; // 輸出: 4.2 (double/float) ?>測(cè)試看看?/?
正如您看到的,給定數(shù)字是否為負(fù),則返回的值為正。但是,如果數(shù)字為正,則此函數(shù)僅返回?cái)?shù)字。
ceil()函數(shù)可用于將小數(shù)取整到下一個(gè)最高整數(shù),而floor()函數(shù)可用于將小數(shù)取整到下一個(gè)最小整數(shù),如以下示例所示:
<?php //分?jǐn)?shù)向上取整 echo ceil(4.2) . "<br>"; // 輸出: 5 echo ceil(9.99) . "<br>"; // 輸出: 10 echo ceil(-5.18) . "<br>"; // 輸出: -5 //分?jǐn)?shù)向下舍入 echo floor(4.2) . "<br>"; // 輸出: 4 echo floor(9.99) . "<br>"; // 輸出: 9 echo floor(-5.18) . "<br>"; // 輸出: -6 ?>測(cè)試看看?/?
您可以使用sqrt()函數(shù)來(lái)查找正數(shù)的平方根。 如果數(shù)字為負(fù)數(shù),則返回NaN。 這里有一個(gè)實(shí)例:
<?php echo sqrt(9) . "<br>"; // 輸出: 3 echo sqrt(25) . "<br>"; // 輸出: 5 echo sqrt(10) . "<br>"; // 輸出: 3.1622776601684 echo sqrt(-16) . "<br>"; // 輸出: NAN ?>測(cè)試看看?/?
rand()函數(shù)可用于生成隨機(jī)數(shù)。您可以選擇通過(guò)傳遞min,max參數(shù)來(lái)指定范圍,如以下示例所示:
<?php //生成一些隨機(jī)數(shù) echo rand() . "<br>"; echo rand() . "<br>"; //生成一些介于1到10之間的隨機(jī)數(shù)(包括1和10) echo rand(1, 10) . "<br>"; echo rand(1, 10) . "<br>"; ?>測(cè)試看看?/?
如果調(diào)用 rand ()函數(shù)時(shí)沒(méi)有可選的 min,max 參數(shù),那么它將返回一個(gè)介于0和getrandmax ()之間的偽隨機(jī)數(shù)。函數(shù) getrandmax ()顯示了最大的隨機(jī)值,在 Windows 平臺(tái)上只有32767。因此,如果您需要一個(gè)大于32767的范圍,您可以簡(jiǎn)單地指定 min 和 max 參數(shù)。
decbin()函數(shù)用于將十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)。而其對(duì)應(yīng) bindec()函數(shù)將數(shù)字從二進(jìn)制轉(zhuǎn)換為十進(jìn)制。
<?php //將十進(jìn)制轉(zhuǎn)換為二進(jìn)制 echo decbin(2) . "<br>"; // 輸出: 10 echo decbin(12) . "<br>"; // 輸出: 1100 echo decbin(100) . "<br>"; // 輸出: 1100100 //將二進(jìn)制轉(zhuǎn)換為十進(jìn)制 echo bindec(10) . "<br>"; // 輸出: 2 echo bindec(1100) . "<br>"; // 輸出: 12 echo bindec(1100100); // 輸出: 100 ?>測(cè)試看看?/?
dechex()函數(shù)用于將十進(jìn)制數(shù)轉(zhuǎn)換為十六進(jìn)制表示形式。而 hexdec()函數(shù)用于將十六進(jìn)制字符串轉(zhuǎn)換為十進(jìn)制數(shù)字。
<?php //將十進(jìn)制轉(zhuǎn)換為十六進(jìn)制 echo dechex(255) . "<br>"; // 輸出: ff echo dechex(196) . "<br>"; // 輸出: c4 echo dechex(0) . "<br>"; // 輸出: 0 //將十六進(jìn)制轉(zhuǎn)換為十進(jìn)制 echo hexdec('ff') . "<br>"; // 輸出: 255 echo hexdec('c4') . "<br>"; // 輸出: 196 echo hexdec(0); // 輸出: 0 ?>測(cè)試看看?/?
decoct()函數(shù)用于將十進(jìn)制數(shù)轉(zhuǎn)換為八進(jìn)制表示形式。octdec()函數(shù)用于將八進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)。
<?php //將十進(jìn)制轉(zhuǎn)換為八進(jìn)制 echo decoct(12) . "<br>"; // 輸出: 14 echo decoct(256) . "<br>"; // 輸出: 400 echo decoct(77) . "<br>"; // 輸出: 115 //將八進(jìn)制轉(zhuǎn)換為十進(jìn)制 echo octdec('14') . "<br>"; // 輸出: 12 echo octdec('400') . "<br>"; // 輸出: 256 echo octdec('115'); // 輸出: 77 ?>測(cè)試看看?/?
base_convert()函數(shù)可用于將數(shù)字從一個(gè)基本系統(tǒng)轉(zhuǎn)換為另一個(gè)基本系統(tǒng)。例如,您可以將十進(jìn)制(基數(shù)10)轉(zhuǎn)換為二進(jìn)制(基數(shù)2),十六進(jìn)制(基數(shù)16)轉(zhuǎn)換為八進(jìn)制(基數(shù)8)),八進(jìn)制轉(zhuǎn)換為十六進(jìn)制,十六進(jìn)制轉(zhuǎn)換為十進(jìn)制,依此類推。
此函數(shù)接受三個(gè)參數(shù):要轉(zhuǎn)換的數(shù)字,當(dāng)前所用的基數(shù)以及要轉(zhuǎn)換成的基數(shù)?;菊Z(yǔ)法如下:
base_convert(number,frombase,tobase);
frombase和tobase都必須在2到36之間(包括2和36)。 底數(shù)大于10的數(shù)字將由字母a-z表示,其中a表示10,b表示11,z表示35。這是一個(gè)簡(jiǎn)單的示例,說(shuō)明此函數(shù)的工作方式:
<?php //將十進(jìn)制轉(zhuǎn)換為二進(jìn)制 echo base_convert('12', 10, 2) . "<br>"; // 輸出: 1100 //將二進(jìn)制轉(zhuǎn)換為十進(jìn)制 echo base_convert('1100', 2, 10) . "<br>"; // 輸出: 12 //將十進(jìn)制轉(zhuǎn)換為十六進(jìn)制 echo base_convert('10889592', 10, 16) . "<br>"; // 輸出: a62978 //將十六進(jìn)制轉(zhuǎn)換為十進(jìn)制 echo base_convert('a62978', 16, 10) . "<br>"; // 輸出: 10889592 //將十進(jìn)制轉(zhuǎn)換為八進(jìn)制 echo base_convert('82', 10, 8) . "<br>"; // 輸出: 122 //將八進(jìn)制轉(zhuǎn)換為十進(jìn)制 echo base_convert('122', 8, 10) . "<br>"; // 輸出: 82 //將十六進(jìn)制轉(zhuǎn)換為八進(jìn)制 echo base_convert('c2c6a8', 16, 8) . "<br>"; // 輸出: 60543250 //將八進(jìn)制轉(zhuǎn)換為十六進(jìn)制 echo base_convert('60543250', 8, 16) . "<br>"; // 輸出: c2c6a8 //將八進(jìn)制轉(zhuǎn)換為二進(jìn)制 echo base_convert('42', 8, 2) . "<br>"; // 輸出: 100010 //將二進(jìn)制轉(zhuǎn)換為八進(jìn)制 echo base_convert('100010', 2, 8) . "<br>"; // 輸出: 42 //將十六進(jìn)制轉(zhuǎn)換為二進(jìn)制 echo base_convert('abc', 16, 2) . "<br>"; // 輸出: 101010111100 //將二進(jìn)制轉(zhuǎn)換為十六進(jìn)制 echo base_convert('101010111100', 2, 16); // 輸出: abc ?>測(cè)試看看?/?
注意:base_convert()函數(shù)將始終返回字符串值。如果返回的值以10為底,則所得的字符串可以用作計(jì)算中的數(shù)字字符串,并且在執(zhí)行計(jì)算時(shí),PHP會(huì)將其轉(zhuǎn)換為數(shù)字。