在本教程中,您将学习如何在PHP中执行数学运算。
PHP具有多个内置函数,可帮助您执行从简单的加法或减法到高级计算的所有操作。您已经在PHP运算符章节中了解了如何执行基本的数学运算。让我们再看一个实例:
<?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 ?>测试看看‹/›
每个数学运算都有一定的优先级;通常,乘法和除法是在加法和减法之前执行的。但是,括号可以更改此优先级。不管操作的优先级如何,总是首先对括号内的表达式进行求值,如以下示例所示:
<?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 ?>测试看看‹/›
在以下部分中,我们将学习一些内置的PHP函数,这些函数最常用于执行数学运算。
可以使用abs()函数找到整数或浮点数的绝对值,如以下示例所示:
<?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) ?>测试看看‹/›
正如您看到的,给定数字是否为负,则返回的值为正。但是,如果数字为正,则此函数仅返回数字。
ceil()函数可用于将小数取整到下一个最高整数,而floor()函数可用于将小数取整到下一个最小整数,如以下示例所示:
<?php //分数向上取整 echo ceil(4.2) . "<br>"; // 输出: 5 echo ceil(9.99) . "<br>"; // 输出: 10 echo ceil(-5.18) . "<br>"; // 输出: -5 //分数向下舍入 echo floor(4.2) . "<br>"; // 输出: 4 echo floor(9.99) . "<br>"; // 输出: 9 echo floor(-5.18) . "<br>"; // 输出: -6 ?>测试看看‹/›
您可以使用sqrt()函数来查找正数的平方根。 如果数字为负数,则返回NaN。 这里有一个实例:
<?php echo sqrt(9) . "<br>"; // 输出: 3 echo sqrt(25) . "<br>"; // 输出: 5 echo sqrt(10) . "<br>"; // 输出: 3.1622776601684 echo sqrt(-16) . "<br>"; // 输出: NAN ?>测试看看‹/›
rand()函数可用于生成随机数。您可以选择通过传递min,max参数来指定范围,如以下示例所示:
<?php //生成一些随机数 echo rand() . "<br>"; echo rand() . "<br>"; //生成一些介于1到10之间的随机数(包括1和10) echo rand(1, 10) . "<br>"; echo rand(1, 10) . "<br>"; ?>测试看看‹/›
如果调用 rand ()函数时没有可选的 min,max 参数,那么它将返回一个介于0和getrandmax ()之间的伪随机数。函数 getrandmax ()显示了最大的随机值,在 Windows 平台上只有32767。因此,如果您需要一个大于32767的范围,您可以简单地指定 min 和 max 参数。
decbin()函数用于将十进制数转换为二进制数。而其对应 bindec()函数将数字从二进制转换为十进制。
<?php //将十进制转换为二进制 echo decbin(2) . "<br>"; // 输出: 10 echo decbin(12) . "<br>"; // 输出: 1100 echo decbin(100) . "<br>"; // 输出: 1100100 //将二进制转换为十进制 echo bindec(10) . "<br>"; // 输出: 2 echo bindec(1100) . "<br>"; // 输出: 12 echo bindec(1100100); // 输出: 100 ?>测试看看‹/›
dechex()函数用于将十进制数转换为十六进制表示形式。而 hexdec()函数用于将十六进制字符串转换为十进制数字。
<?php //将十进制转换为十六进制 echo dechex(255) . "<br>"; // 输出: ff echo dechex(196) . "<br>"; // 输出: c4 echo dechex(0) . "<br>"; // 输出: 0 //将十六进制转换为十进制 echo hexdec('ff') . "<br>"; // 输出: 255 echo hexdec('c4') . "<br>"; // 输出: 196 echo hexdec(0); // 输出: 0 ?>测试看看‹/›
decoct()函数用于将十进制数转换为八进制表示形式。octdec()函数用于将八进制数转换为十进制数。
<?php //将十进制转换为八进制 echo decoct(12) . "<br>"; // 输出: 14 echo decoct(256) . "<br>"; // 输出: 400 echo decoct(77) . "<br>"; // 输出: 115 //将八进制转换为十进制 echo octdec('14') . "<br>"; // 输出: 12 echo octdec('400') . "<br>"; // 输出: 256 echo octdec('115'); // 输出: 77 ?>测试看看‹/›
base_convert()函数可用于将数字从一个基本系统转换为另一个基本系统。例如,您可以将十进制(基数10)转换为二进制(基数2),十六进制(基数16)转换为八进制(基数8)),八进制转换为十六进制,十六进制转换为十进制,依此类推。
此函数接受三个参数:要转换的数字,当前所用的基数以及要转换成的基数。基本语法如下:
base_convert(number,frombase,tobase);
frombase和tobase都必须在2到36之间(包括2和36)。 底数大于10的数字将由字母a-z表示,其中a表示10,b表示11,z表示35。这是一个简单的示例,说明此函数的工作方式:
<?php //将十进制转换为二进制 echo base_convert('12', 10, 2) . "<br>"; // 输出: 1100 //将二进制转换为十进制 echo base_convert('1100', 2, 10) . "<br>"; // 输出: 12 //将十进制转换为十六进制 echo base_convert('10889592', 10, 16) . "<br>"; // 输出: a62978 //将十六进制转换为十进制 echo base_convert('a62978', 16, 10) . "<br>"; // 输出: 10889592 //将十进制转换为八进制 echo base_convert('82', 10, 8) . "<br>"; // 输出: 122 //将八进制转换为十进制 echo base_convert('122', 8, 10) . "<br>"; // 输出: 82 //将十六进制转换为八进制 echo base_convert('c2c6a8', 16, 8) . "<br>"; // 输出: 60543250 //将八进制转换为十六进制 echo base_convert('60543250', 8, 16) . "<br>"; // 输出: c2c6a8 //将八进制转换为二进制 echo base_convert('42', 8, 2) . "<br>"; // 输出: 100010 //将二进制转换为八进制 echo base_convert('100010', 2, 8) . "<br>"; // 输出: 42 //将十六进制转换为二进制 echo base_convert('abc', 16, 2) . "<br>"; // 输出: 101010111100 //将二进制转换为十六进制 echo base_convert('101010111100', 2, 16); // 输出: abc ?>测试看看‹/›
注意:base_convert()函数将始终返回字符串值。如果返回的值以10为底,则所得的字符串可以用作计算中的数字字符串,并且在执行计算时,PHP会将其转换为数字。