PHP 数学运算符

在本教程中,您将学习如何在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会将其转换为数字。