PHP Conference Fukuoka 2025

intdiv

(PHP 7, PHP 8)

intdivDivisão de inteiros

Descrição

intdiv(int $num1, int $num2): int

Retorna o quociente inteiro da divisão de num1 por num2.

Parâmetros

num1

Número a ser dividido.

num2

Número que divide o num1.

Valor Retornado

O quociente inteiro da divisão de num1 por num2.

Erros/Exceções

Se num2 for 0, uma exceção DivisionByZeroError é lançada. Se num1 for PHP_INT_MIN e num2 for -1, então uma exceção ArithmeticError é lançada.

Exemplos

Exemplo #1 Exemplo de intdiv()

<?php
var_dump
(intdiv(3, 2));
var_dump(intdiv(-3, 2));
var_dump(intdiv(3, -2));
var_dump(intdiv(-3, -2));
var_dump(intdiv(PHP_INT_MAX, PHP_INT_MAX));
var_dump(intdiv(PHP_INT_MIN, PHP_INT_MIN));
?>

O exemplo acima produzirá:

int(1)
int(-1)
int(-1)
int(1)
int(1)
int(1)

Exemplo #2 Exemplo de intdiv() com divisor inválido

<?php
try {
intdiv(PHP_INT_MIN, -1);
} catch (
Error $e) {
echo
get_class($e), ': ', $e->getMessage(), PHP_EOL;
}

try {
intdiv(1, 0);
} catch (
Error $e) {
echo
get_class($e), ': ', $e->getMessage(), PHP_EOL;
}
?>

O exemplo acima produzirá:

ArithmeticError: Division of PHP_INT_MIN by -1 is not an integer
DivisionByZeroError: Division by zero

Veja Também

  • / - Divisão de ponto flutuante
  • % - Resto de divisão de inteiros
  • fmod() - Retorna o resto (módulo) em ponto flutuante da divisão dos argumentos - Resto de divisão em ponto flutuante

adicionar nota

Notas de Usuários 2 notes

up
42
AmeenRoss
10 years ago
This does indeed seem to be equal to intdiv:<?phpfunction intdiv_1($a, $b){    return ($a - $a % $b) / $b;}?>However, this isn't:<?phpfunction intdiv_2($a, $b){    return floor($a / $b);}?>Consider an example where either of the parameters is negative:<?php$param1 = -10;$param2 = 3;print_r([    'modulus' => intdiv_1($param1, $param2),    'floor' => intdiv_2($param1, $param2),]);/** * Array * ( *     [modulus] => -3 *     [floor] => -4 * ) */?>
up
5
oittaa
3 years ago
Python style integer division, where the result is always rounded towards minus infinity.1 // 2 is 0(-1) // 2 is -11 // (-2) is -1(-1) // (-2) is 0<?phpfunction intdiv_py(int $num1, int $num2): int{    if ($num1 < 0 xor $num2 < 0){        $num1 = abs($num1);        $num2 = abs($num2);        $remainder = $num1 % $num2;        return $remainder ? -1 -($num1 - $remainder) / $num2 : -$num1 / $num2;    }    return intdiv($num1, $num2);}var_dump(intdiv_py(1, 2)); // 0var_dump(intdiv_py(-1, 2)); // -1var_dump(intdiv_py(1, -2)); // -1var_dump(intdiv_py(-1, -2)); // 0?>
To Top