PHP 7 intdiv() vx floor 或自定义类型转换

PHP 7 intdiv() vx floor or custom type cast

我正在寻找 PHP 7 个新添加项以提高我的技能,我想知道 intdiv()floor() 或自定义 type cast

例如

echo (int) (8/3); // 2
echo floor((8/3)); // 2
echo intdiv((8/3)); // 2

新版本 PHP 添加此功能的确切原因是什么。

(int) 将值转换为 intfloor()float 保留为 float。您在示例中使用了正数,但不同之处在于负数。 intdiv 的设计目的是在除以 2 int 之后保留 int

echo (int) (-8/3); // -2
echo floor(-8/3); // -3
echo intdiv(-8,3); //-2

总的来说,您提到的所有这三个都与您的示例相似,但 intdiv() 会在处理非常大的数字集时为您提供更准确的结果

这里是你可以看到的例子。

echo PHP_INT_MAX; // 9223372036854775807

echo (int)(PHP_INT_MAX/2); // 4611686018427387904
// here you can look the ending number

echo floor(PHP_INT_MAX/2); // 4.6116860184274E+18
// here you can see floor will return scientific notation for larger numbers

echo intdiv(PHP_INT_MAX,2); // 4611686018427387903
// you can compare the result return by (int) cast

intdiv() 总是给你正数或者换句话说 intdiv() 让你知道多少次你可以平分

另一个示例开发人员总是使用 Modulus 运算符来获得余数,但 intdiv() 将始终 return 你正数并让你知道你可以平均分配多少次。

echo (5 % 2) // 1
echo intdiv(5, 2) // 2

希望这足以理解他们三个之间的区别..