PHP intdiv() 函数

定义和用法

intdiv() 函数返回整数除法的商(向零取整)。该函数是 PHP 7 中新增的,用于执行整数除法,当除数或被除数为负数时,结果向零舍入。

提示:与常规除法运算符 / 不同,intdiv() 总是返回整数,并且不会产生浮点数。如果除数为 0,会抛出异常。

语法

intdiv(int $dividend, int $divisor): int
参数 描述
dividend 必需。被除数(分子)。
divisor 必需。除数(分母)。

返回值

返回 dividend 除以 divisor 的整数商(向零取整)。

PHP 版本

  • PHP 7+ (包括 PHP 7, 8+)

示例

示例 1:基本用法

<?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

示例 2:处理负数(向零取整)

<?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

示例 3:除零异常(PHP 8+)

<?php
try {
    echo intdiv(5, 0);
} catch (DivisionByZeroError $e) {
    echo "捕获异常: " . $e->getMessage();
}
?>

输出(PHP 8+):

捕获异常: Division by zero

示例 4:与普通除法的区别

<?php
$a = 7;
$b = 2;

echo "普通除法: " . ($a / $b) . "<br>";   // 3.5
echo "intdiv: " . intdiv($a, $b) . "<br>"; // 3
?>

输出:

普通除法: 3.5
intdiv: 3

相关函数

  • / 运算符 - 普通除法(返回浮点数)
  • % 运算符 - 取模(余数)
  • fmod() - 浮点数取模
  • floor() - 向下取整
  • round() - 四舍五入

注意事项

重要:
  • 除数不能为 0,否则在 PHP 8 及以上版本会抛出 DivisionByZeroError 异常;在 PHP 7 中会返回 false 并发出 E_WARNING。
  • intdiv() 的结果总是向零取整,而不是向下取整。例如 intdiv(-7, 2) 返回 -3,而 floor(-7/2) 返回 -4。
  • 参数必须是整数,如果传入浮点数,PHP 会尝试将其转换为整数(可能产生意外结果)。
  • 该函数不能用于大整数除法(如超过 PHP 整数范围),但通常可以处理范围内的整数。