Php 简明教程

PHP – Maths Functions

为启用数学运算,PHP 具有数学(算术)运算符和许多数学函数。在本章中,将通过示例说明以下数学函数。

PHP abs() Function

abs() 函数是 PHP 解释器的内置函数。此函数接受任意数字作为参数并返回一个正值,而不考虑其符号。任何数字的绝对值始终为正。

abs( mixed $num)

PHP abs() 函数返回 num 的绝对值。如果 num 的数据类型是浮点数,它的返回类型也将是浮点数。对于整数参数,返回类型为整数。

Example

请查看以下示例:

<?php
   $num=-9.99;
   echo "negative float number: " . $num . "\n";
   echo "absolute value : " . abs($num) . "\n";

   $num=25.55;
   echo "positive float number: " . $num . "\n";
   echo "absolute value : " . abs($num). "\n";

   $num=-45;
   echo "negative integer number: " . $num . "\n";
   echo "absolute value : " . abs($num) . "\n";

   $num=25;
   echo "positive integer number: " . $num . "\n";
   echo "absolute value : " . abs($num);
?>

它将生成以下 output

negative float number: -9.99
absolute value : 9.99
positive float number: 25.55
absolute value : 25.55
negative integer number: -45
absolute value : 45
positive integer number: 25
absolute value : 25

PHP ceil() Function

ceil() 函数是 PHP 解释器的内置函数。此函数接受任意浮点数作为参数并将其四舍五入到下一个最高整数。此函数始终返回一个浮点数,因为浮点数的范围大于整数范围。

ceil ( float $num ) : float

PHP ceil() 函数返回大于或等于给定参数的最小整数值。

Example 1

以下代码将 5.78 四舍五入到其下一个最高整数 6

<?php
   $arg=5.78;
   $val=ceil($arg);
   echo "ceil(" . $arg .  ") = " . $val;
?>

它将生成以下 output

ceil(5.78) = 6

Example 2

以下示例演示了如何查找 15.05 的下一个最高整数。

<?php
   $arg=15.05;
   $val=ceil($arg);
   echo "ceil(" . $arg .  ") = " . $val;
?>

它将生成以下 output

ceil(15.05) = 16

Example 3

对于负数,它会四舍五入到 0。

<?php
   $arg=-3.95;
   $val=ceil($arg);
   echo "ceil(" . $arg .  ") = " . $val;
?>

它将生成以下 output

ceil(-3.95) = -3

PHP exp() Function

exp() 函数计算欧拉数 e 的指数。PHP 有一个预定义常量 M_E,表示欧拉数,等于 2.7182818284590452354。因此,exp(x) 返回 2.7182818284590452354x

此函数始终返回一个浮点数。

exp ( float $arg ) : float

PHP exp() 函数返回提升到给定 arg. 的欧拉数 e。请注意, e 是自然算法的底数。exp() 函数是自然对数的逆函数。

Example 1

PHP 中的一个预定义常量是 M_LN2 ,它表示 loge2,等于 0.69314718055994530942。因此,此值的 exp() 将返回 2。

<?php
   echo "exp(" . M_LN2 . ") = " . exp(M_LN2);
?>

它将生成以下 output

exp(0.69314718055995) = 2

Example 2

M_LN10 是表示 loge10 的另一个预定义常量。此程序计算 exp(M_LN10) 并返回 10。

<?php
   echo "exp(" . M_LN10 . ") = " . exp(M_LN10);
?>

它将生成以下 output

exp(2.302585092994) = 10

PHP floor() Function

floor() 函数是 PHP 解释器中的另一个内置函数。此函数接受任意浮点数字作为参数,并根据其向下取整到最接近的整数。此函数始终返回浮点数,因为浮点值的范围大于整数值的范围。

floor ( float $num ) : float

PHP floor() 函数返回不小于给定参数的最大整数。

Example 1

以下示例展示了如何将 15.05 舍入至下一个最大整数,即 15

<?php
   $arg=15.05;
   $val=floor($arg);
   echo "floor(" . $arg .  ") = " . $val;
?>

它将生成以下 output

floor(15.05) = 15

Example 2

以下示例展示了如何找出 5.78 的下一个最小整数。

<?php
   $arg=5.78;
   $val=floor($arg);
   echo "floor(" . $arg .  ") = " . $val;
?>

它将生成以下 output

floor(5.78) = 5

Example 3

负数从 0 中舍去。

<?php
   $arg=-3.95;
   $val=floor($arg);
   echo "floor(" . $arg .  ") = " . $val;
?>

它将生成以下 output

floor(-3.95) = -4

PHP intdiv() Function

intdiv() 函数返回两个整型参数的整数商。如果 x/y 除法结果为“i”,余数为“r”,则为 −

x = y*i+r

在这种情况下,intdiv(x,y) 返回“i”

intdiv ( int $x , int $y ) : int

“x”参数是除法表达式的分子部分,而“y”参数是除法表达式的分母部分。

PHP intdiv() 函数返回“x”除以“y”的整数商。如果两个参数都是正数或都是负数,则返回值为正数。

Example 1

以下示例表明,如果分子小于分母,则 intdiv() 函数返回 0。

<?php
   $x=10;
   $y=3;
   $r=intdiv($x, $y);
   echo "intdiv(" . $x . "," . $y . ") = " . $r . "\n";
   $r=intdiv($y, $x);
   echo "intdiv(" . $y . "," . $x . ") = " . $r;
?>

它将生成以下 output

intdiv(10,3) = 3
intdiv(3,10) = 0

Example 2

在以下示例中,intdiv() 函数返回负数,因为分子或分母是负数。

<?php
   $x=10;
   $y=3;
   $r=intdiv($x, $y);
   echo "intdiv(" . $x . "," . $y . ") = " . $r . "\n";

   $x=10;
   $y=-3;
   $r=intdiv($x, $y);
   echo "intdiv(" . $x . "," . $y . ") = " . $r . "\n";

   $x=-10;
   $y=3;
   $r=intdiv($x, $y);
   echo "intdiv(" . $x . "," . $y . ") = " . $r . "\n";

   $x=-10;
   $y=-3;
   $r=intdiv($x, $y);
   echo "intdiv(" . $x . "," . $y . ") = " . $r ;
?>

它将生成以下 output

intdiv(10,3) = 3
intdiv(10,-3) = -3
intdiv(-10,3) = -3
intdiv(-10,-3) = 3

Example 3

在以下示例中,分母为 0。它导致 DivisionByZeroError 异常。

<?php
   $x=10;
   $y=0;
   $r=intdiv($x, $y);
   echo "intdiv(" . $x . "," . $y . ") = " . $r . "\n";
?>

它将生成以下 output

PHP Fatal error:  Uncaught DivisionByZeroError: Division by zero

Example 4

两个参数中的小数部分都会被忽略。PHP intdiv() 函数仅适用于整数部分。

<?php
   $x=2.90;
   $y=1.90;
   $r=intdiv($x, $y);
   echo "intdiv(" . $x . "," . $y . ") = " . $r . "";
?>

它将生成以下 output

intdiv(2.9,1.9) = 2

PHP log10() Function

log10 () 函数计算某个数字的以 10 为底的对数。以 10 为底的对数也称为 commonstandard algorithm 。log10(x) 函数计算 log10x。它与自然算法之间的关系由以下等式表示 −

log10x=logex/loge10 ; So that
log10100=loge100/loge10 = 2

在 PHP 中, log10log10() 函数表示

log10 ( float $arg ) : float

PHP log10() 函数返回 arg 的以 10 为底的对数。

Example 1

以下代码计算 100 的以 10 为底的对数

<?php
   $arg=100;
   echo "log10(" . $arg. ")=" . log10($arg) . "";
?>

它将生成以下 output

log10(100)=2

Example 2

以下代码计算欧拉数 M_E 的以 10 为底的对数。结果等于预定义的常数 M_LOG10E

<?php
   $arg=M_E;
   echo "log10(" . $arg. ")=" . log10($arg) . "\n";
   echo "predefined constant M_LOG10E=" . M_LOG10E;
?>

它将生成以下 output

log10(2.718281828459)=0.43429448190325
predefined constant M_LOG10E=0.43429448190325

Example 3

以下代码计算 log100 并返回 -∞。

<?php
   $arg=0;
   echo "log10(" . $arg. ")=" . log10($arg) . "";
?>

它将生成以下 output

log10(0)=-INF

Example 4

平方根(-1)的结果也是 NaN。所以它的 log10() 也返回 NaN。

<?php
   $arg=sqrt(-1);
   echo "log10(" . $arg. ")=" . log10($arg) . "";
?>

它将生成以下 output

log10(NAN)=NAN

PHP max() Function

max() 函数返回数组中最大的元素,或者返回两个或两个以上逗号分隔参数中最大的参数。

max ( array $values ) : mixed

或者,

max ( mixed $value1 [, mixed $... ] ) : mixed
  1. 如果只给出了一个参数,则它应该是可能具有相同或不同类型的值的数组。

  2. 如果给出了两个或更多参数,则它们应该是具有相同或不同类型的任何可比较值。

PHP max() 函数返回数组参数或值序列中的最大值。标准比较运算符适用。如果不同类型的值有多个被评估为相等(例如 0 和’PHP'),则将返回函数的第一个参数。

Example 1

下面的代码返回数字数组中的最大值。

<?php
   $arg=array(23, 5.55, 142, 56, 99);
   echo "array=";
   foreach ($arg as $i) echo $i . ",";
   echo "\n";
   echo "max = " . max($arg);
?>

它将生成以下 output

array=23,5.55,142,56,99,
max = 142

Example 2

下面的代码返回字符串数组中的 max()。

<?php
   $arg=array("Java", "Angular", "PHP", "C", "Kotlin");
   echo "array=";
   foreach ($arg as $i) echo $i . ",";
   echo "\n";
   echo "max = " . max($arg);
?>

它将生成以下 output

array=Java,Angular,PHP,C,Kotlin,
max = PHP

Example 3

在下面的示例中,向 max() 函数提供了一系列字符串值。让我们看看它如何表现 −

<?php
   $val1="Java";
   $val2="Angular";
   $val3="PHP";
   $val4="C";
   $val5="Kotlin";
   echo "values=" . $val1 . "," . $val2 . "," . $val3 . "," . 	$val4 . "," . $val5 . "\n";
   echo "max = " . max($val1, $val2, $val3,$val4,$val5);
?>

它将生成以下 output

values=Java,Angular,PHP,C,Kotlin
max = PHP

Example 4

在此示例中,给定的数组是混合数据类型的集合。

<?php
   $arg=array(23, "Java", 142, 1e2, 99);
   echo "array=";
   foreach ($arg as $i) echo $i . ",";
   echo "\n";
   echo "max = " . max($arg);
?>

它将生成以下 output

array=23,Java,142,100,99,
max = 142

PHP min() Function

min() 函数返回数组中最小的元素,或者返回两个或两个以上逗号分隔参数中最小的参数。

min ( array $values ) : mixed

或者,

min ( mixed $value1 [, mixed $... ] ) : mixed
  1. 如果只给出了一个参数,则它应该是可能具有相同或不同类型的值的数组

  2. 如果给出了两个或更多参数,则它们应该是具有相同或不同类型的任何可比较值

PHP min() 函数返回数组参数或值序列中的最小值。标准比较运算符适用。如果不同类型的值有多个被评估为相等(例如 0 和’PHP'),则将返回函数的第一个参数

Example 1

下面的代码返回数字数组中的最小值。

<?php
   $arg=array(23, 5.55, 142, 56, 99);
   echo "array=";
   foreach ($arg as $i) echo $i . ",";
   echo "\n";
   echo "min = " . min($arg);
?>

它将生成以下 output

array=23,5.55,142,56,99,
min = 5.55

Example 2

下面的代码返回字符串数组中的 min()。

<?php
   $arg=array("Java", "Angular", "PHP", "C", "Kotlin");
   echo "array=";
   foreach ($arg as $i) echo $i . ",";
   echo "\n";
   echo "min = " . min($arg);
?>

它将生成以下 output

array=Java,Angular,PHP,C,Kotlin,
min = Angular

Example 3

此示例中,向 min() 函数提供了一系列字符串值。

<?php
   $val1="Java";
   $val2="Angular";
   $val3="PHP";
   $val4="C";
   $val5="Kotlin";
   echo "values=" . $val1 . "," . $val2 . "," . $val3 . "," . 	$val4 . "," . $val5 . "\n";
   echo "min = " . min($val1, $val2, $val3,$val4,$val5);
?>

它将生成以下 output

values=Java,Angular,PHP,C,Kotlin
min = Angular

Example 4

在此示例中,给定的数组是混合数据类型的集合。

<?php
   $arg=array(23, "Java", 142, 1e2, 99);
   echo "array=";
   foreach ($arg as $i) echo $i . ",";
   echo "\n";
   echo "min = " . min($arg);
?>

它将生成以下 output

array=23,Java,142,100,99,
min = 23

PHP pow() Function

pow () 函数用于计算某个数的幂。它返回 xy 计算,也称为将 x 提升到 y。PHP 还提供了“**”作为指数运算符。

因此,pow(x,y) 返回 xy,与 x**y 相同。

pow ( number $base , number $exp ) : number

第一个参数是要提升的底数。第二个参数是需要将底数提升到的幂。

PHP pow() 函数返回以 exp 的幂次升高的基数。如果两个参数都是非负整数,则结果将以整数形式返回,否则以浮点数形式返回。

Example 1

以下示例使用 pow() 函数计算 102:

<?php
   echo "pow(10,2) = " . pow(10,2);
   echo " using ** operator " . 10**2;
?>

它将生成以下 output

pow(10,2) = 100 using ** operator 100

Example 2

将任何数字升至 0 次方得到的结果都是 1。以下示例对此进行了验证:

<?php
   $x=10;
   $y=0;
   echo "pow(" . $x, "," . $y . ")=". pow($x,$y);
?>

它将生成以下 output

pow(10,0)=1

Example 3

以下示例展示了如何使用 pow() 函数计算 100 的平方根:

<?php
   $x=100;
   $y=0.5;
   echo "pow(" . $x, "," . $y . ")=". pow($x,$y) . "\n";
   echo "using sqrt() function : ". sqrt(100);
?>

它将生成以下 output

pow(100,0.5)=10
using sqrt() function : 10

Example 4

本示例展示了如何使用 pow() 函数计算圆的面积。

<?php
   $radius=5;
   echo "radius = " . $radius . " area = " . M_PI*pow(5,2);
?>

它将生成以下 output

radius = 5 area = 78.539816339745

PHP round() Function

round() 函数可用于将任意浮点数四舍五入到所需精度级别。正精度参数使数字在小数点后四舍五入;而负精度导致数字在小数点前四舍五入。精度默认为“0”。

例如,round(10.6) 返回 11,round(10.2) 返回 10。此函数始终返回浮点数。

该函数还有另一个可选参数,称为 mode ,它采用稍后描述的重新定义的常量之一。

round ( float $value , int $precision , int $mode ) : float

Parameters

  1. Value - 要舍入的浮点数。

  2. Precision - 要舍入为几位小数。默认为 0。正精度在小数点后舍入给定的数字。负精度在小数点前舍入给定的数字。

  3. Mode - 下列预定义常量之一。

Sr.No

Constant & Description

1

PHP_ROUND_HALF_UP 当数字达到一半时,舍入为远离 0。因此,1.5 变为 2,-1.5 变为 -2

2

PHP_ROUND_HALF_DOWN 当数字达到一半时,舍入为靠近 0。因此 1.5 变为 1,-1.5 变为 -1

3

PHP_ROUND_HALF_EVEN 将数字舍入到最接近的偶数值

4

PHP_ROUND_HALF_ODD 将数字舍入到最接近的奇数值

PHP round() 函数返回一个浮点数,方法是将该值四舍五入到所需的精度。

Example 1

以下代码将给定数字舍入到正精度值:

<?php
   $arg=1234.567;
   echo "round(" . $arg . ") = " . round($arg) . "\n";
   echo "round(" . $arg . ",1) = " . round($arg,1) . "\n";
   echo "round(" . $arg . ",2) = " . round($arg,2) . "";
?>

它将生成以下 output

round(1234.567) = 1235
round(1234.567,1) = 1234.6
round(1234.567,2) = 1234.57

Example 2

以下代码将数字舍入到负精度值:

<?php
   $arg=1234.567;
   echo "round(" . $arg . ") = " . round($arg) . "\n";
   echo "round(" . $arg . ",-1) = " . round($arg,-1) . "\n";
   echo "round(" . $arg . ",-2) = " . round($arg,-2) . "";
?>

它将生成以下 output

round(1234.567) = 1235
round(1234.567,-1) = 1230
round(1234.567,-2) = 1200

Example 3

以下代码针对舍入使用 UP 和 DOWN 模式常量:

<?php
   echo "round(3.45,HALF_UP) = " . round(3.45,0, PHP_ROUND_HALF_UP) . "\n";
   echo "round(3.75 HALF_UP) = " . round(3.75, 1, PHP_ROUND_HALF_DOWN) . "";
?>

它将生成以下 output

round(3.45,HALF_UP) = 3
round(3.75 HALF_UP) = 3.7

Example 4

以下代码使用 ODD 和 EVEN 模式进行舍入 −

<?php
   echo "round( 3.45,HALF_ODD) = " . round(3.45,0, PHP_ROUND_HALF_ODD) . "\n";
   echo "round(3.78 HALF_EVEN) = " . round(3.78, 0, PHP_ROUND_HALF_EVEN) . "";
?>

它将生成以下 output

round(3.45,HALF_ODD) = 3
round(3.78, HALF_EVEN) = 4

PHP sqrt() Function

sqrt() 函数返回正浮点数的平方根。由于负数的平方根未定义,因此它返回 NAN。这是最常用的函数之一。此函数始终返回浮点数。

sqrt (float $arg) : float

PHP sqrt() 函数返回给定 arg 数字的平方根。对于负数,该函数返回 NAN。

Example 1

以下代码计算 100 的平方根 −

<?php
   $arg = 100;
   echo "Square root of " . $arg . "=" . sqrt($arg) . "";
?>

它将生成以下 output

Square root of 100=10

Example 2

对于 sqrt(2)、1/sqrt(2) 和 sqrt(3),PHP 分别有特殊预定义常量 M_SQRT2、M_SQRT1_2 和 M_SQRT3。

<?php
   echo "sqrt(2) = " . sqrt(2) . "\n";
   echo "M_SQRT2 = " . M_SQRT2. "\n";
   echo "sqrt(3) = " . sqrt(3) . "\n";
   echo "M_SQRT3 = " . M_SQRT3 . "\n";
   echo "1/sqrt(2)) = " . 1/sqrt(2) . "\n";
   echo "M_SQRT1_2 = " . M_SQRT1_2 . "";
?>

它将生成以下 output

sqrt(2) = 1.4142135623731
M_SQRT2 = 1.4142135623731
sqrt(3) = 1.7320508075689
M_SQRT3 = 1.7320508075689
1/sqrt(2)) = 0.70710678118655
M_SQRT1_2 = 0.70710678118655

Example 3

数学常量 M_SQRTPI 和 M_2_SQRTPI 分别表示 sqrt(Π) 和 2/sqrt(Π) 的值。

<?php
   echo "sqrt(pi) = " . sqrt(M_PI) . "\n";
   echo "M_SQRTPI = " . M_SQRTPI. "\n";
   echo "2/sqrt(pi) = " . 2/sqrt(M_PI) . "\n";
   echo "M_2_SQRTPI = " . M_2_SQRTPI . "";
?>

它将生成以下 output

sqrt(pi) = 1.7724538509055
M_SQRTPI = 1.7724538509055
2/sqrt(pi) = 1.1283791670955
M_2_SQRTPI = 1.1283791670955

Example 4

sqrt(-1) 未定义,因此它返回 NAN。

<?php
   echo "sqrt(-1) = " . sqrt(-1) . "";
?>

它将生成以下 output

sqrt(-1) = NAN

Predefined Mathematical Constants

除了上述数学函数外,PHP 还有以下预定义数学常量 −

Constant

Value

Description

M_PI

3.14159265358979323846

Pi

M_E

2.7182818284590452354

Euler Number e

M_LOG2E

1.4426950408889634074

log2 e

M_LOG10E

0.43429448190325182765

log10 e

M_LN2

0.69314718055994530942

loge 2

M_LN10

M_LN10 2.30258509299404568402 loge 10

loge 10

M_PI_2

1.57079632679489661923

pi/2

M_PI_4

0.78539816339744830962

pi/4

M_1_PI

0.31830988618379067154

1/pi

M_2_PI

0.63661977236758134308

2/pi

M_SQRTPI

1.77245385090551602729

sqrt(pi)

M_2_SQRTPI

1.12837916709551257390

2/sqrt(pi)

M_SQRT2

1.41421356237309504880

sqrt(2)

M_SQRT3

1.73205080756887729352

sqrt(3)

M_SQRT1_2

0.70710678118654752440

1/sqrt(2)

M_LNPI

1.14472988584940017414

loge(pi)

M_EULER

0.57721566490153286061

Euler constant

PHP_ROUND_HALF_UP

1

Round halves up

PHP_ROUND_HALF_DOWN

2

Round halves down

PHP_ROUND_HALF_EVEN

3

将一半舍入到偶数

PHP_ROUND_HALF_ODD

4

将一半舍入到奇数

NAN

NAN

Not A Number

INF

INF

Infinity