PHP 8.1.15 Released!

# intdiv

(PHP 7, PHP 8)

intdivInteger-Division

### Beschreibung

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

Gibt den Integer-Quotienten der Division von `num1` durch `num2` zurück.

### Parameter-Liste

`num1`

Die Ausgangszahl, die geteilt werden soll.

`num2`

Die Zahl, durch die `num1` geteilt werden soll.

### Rückgabewerte

Der Integer-Quotient der Division `num1` durch `num2`.

### Fehler/Exceptions

Wenn `num2` `0` ist, wird eine DivisionByZeroError-Exception ausgelöst. Wenn `num1` `PHP_INT_MIN` ist und `num2` `-1`, wird eine ArithmeticError-Exception ausgelöst.

### Beispiele

Beispiel #1 intdiv()-Beispiel

``` <?phpvar_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));var_dump(intdiv(PHP_INT_MIN, -1));var_dump(intdiv(1, 0));?> ```
```int(1)
int(-1)
int(-1)
int(1)
int(1)
int(1)

Fatal error: Uncaught ArithmeticError: Division of PHP_INT_MIN by -1 is not an integer in %s on line 8
Fatal error: Uncaught DivisionByZeroError: Division by zero in %s on line 9
```

### User Contributed Notes 7 notes

41
AmeenRoss
7 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 * ) */?> ```
oittaa
11 months 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?> ```
sree dot millu at gmail dot com
3 years ago
``` @AmeenRoss This does NOT  seem to be equal to intdiv:<?phpfunction intdiv_1(\$a, \$b){    return (\$a - \$a % \$b) / \$b;} ?>See this example code<?php \$x = 5.6;\$y = 1.4 ;echo intdiv(\$x,\$y);        echo "\n";    function intdiv_1(\$a, \$b){    return (\$a - \$a % \$b) / \$b;}    echo intdiv_1(\$x,\$y);?>//Output54 ```
-20
polettog at gmail dot com
7 years ago
``` Without intdiv(), the following may be a good way (with \$a and \$b of type integer and not too big) :<?php(int)(\$a / \$b)?>because in case of divisible integers, the result will be integer and there is no risk of float appearing round but below their represented value (like the case (0.1+0.7)*10).\$a and \$b really needs to be of type integer though. If they are too big and indivisible, some precision will be lost during the conversion to float and the result may be inaccurate. ```
-9
admin at infis dot net dot ru
3 years ago
``` For earler versions PHP you may use:function intdiv_1(\$a, \$b) {    \$a = (int) \$a;    \$b = (int) \$b;    return (\$a - fmod(\$a, \$b)) / \$b;} ```
-25
Ts.Saltan
7 years ago
``` \$a = 57;\$b = 3;var_dump(    intdiv(\$a,\$b),    intdiv_1(\$a,\$b),    intdiv_2(\$a,\$b));function intdiv_1(\$a, \$b){    return (\$a-\$a%\$b)/\$b;}function intdiv_2(\$a, \$b){    return floor(\$a/\$b);}//intdiv(\$a, \$b) == floor(\$a/\$b) == (\$a-\$a%\$b)/\$b ```
-36
Bubonic dot pestilence at gmail dot com
7 years ago
``` <?phpfunction intdiv_2(\$a, \$b)  {    \$val = \$a / \$b;    return (\$val < 0 ? "ceil" : "floor") (\$val);} ?>Aren't this?! ``` 