intdiv() 函数返回整数除法的商(向零取整)。该函数是 PHP 7 中新增的,用于执行整数除法,当除数或被除数为负数时,结果向零舍入。
/ 不同,intdiv() 总是返回整数,并且不会产生浮点数。如果除数为 0,会抛出异常。
intdiv(int $dividend, int $divisor): int
| 参数 | 描述 |
|---|---|
dividend |
必需。被除数(分子)。 |
divisor |
必需。除数(分母)。 |
返回 dividend 除以 divisor 的整数商(向零取整)。
<?php
echo intdiv(8, 3) . "<br>"; // 2 (2*3=6, 余2)
echo intdiv(10, 2) . "<br>"; // 5
echo intdiv(7, 4) . "<br>"; // 1
?>
输出:
2
5
1
<?php
echo intdiv(-8, 3) . "<br>"; // -2 ( -2*3 = -6, 余 -2 )
echo intdiv(8, -3) . "<br>"; // -2
echo intdiv(-8, -3) . "<br>"; // 2
?>
输出:
-2
-2
2
<?php
try {
echo intdiv(5, 0);
} catch (DivisionByZeroError $e) {
echo "捕获异常: " . $e->getMessage();
}
?>
输出(PHP 8+):
捕获异常: Division by zero
<?php
$a = 7;
$b = 2;
echo "普通除法: " . ($a / $b) . "<br>"; // 3.5
echo "intdiv: " . intdiv($a, $b) . "<br>"; // 3
?>
输出:
普通除法: 3.5
intdiv: 3
DivisionByZeroError 异常;在 PHP 7 中会返回 false 并发出 E_WARNING。intdiv() 的结果总是向零取整,而不是向下取整。例如 intdiv(-7, 2) 返回 -3,而 floor(-7/2) 返回 -4。