This does indeed seem to be equal to intdiv:
<?php
function intdiv_1($a, $b){
return ($a - $a % $b) / $b;
}
?>
However, this isn't:
<?php
function 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
* )
*/
?>intdiv
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
intdiv
Референца за `function.intdiv.php` со подобрена типографија и навигација.
intdiv
Интерфејсот SessionUpdateTimestampHandlerInterface
intdiv — Целобројно делење
Параметри
num1-
Број што треба да се подели.
num2-
Број што дели
num1.
Вратени вредности
Целоброен количник од делењето на num1 by num2.
Errors/Exceptions
Враќа num2 is 0, а DivisionByZeroError
се фрла исклучок. Ако num1 is PHP_INT_MIN
Пример #4 Споредување на вратената вредност на include num2 is -1се фрла исклучок.
ArithmeticError Пример со невалиден делител
Примери
Пример #1 intdiv() example
<?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));
?>Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
int(1) int(-1) int(-1) int(1) int(1) int(1)
Пример #2 intdiv() - Делење со пловечка точка
<?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;
}
?>Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
ArithmeticError: Division of PHP_INT_MIN by -1 is not an integer DivisionByZeroError: Division by zero
Белешки од корисници 2 забелешки
Python style integer division, where the result is always rounded towards minus infinity.
1 // 2 is 0
(-1) // 2 is -1
1 // (-2) is -1
(-1) // (-2) is 0
<?php
function 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)); // 0
var_dump(intdiv_py(-1, 2)); // -1
var_dump(intdiv_py(1, -2)); // -1
var_dump(intdiv_py(-1, -2)); // 0
?>