是我的php解释器疯了,还是我就是那个。。。?

是我的php解释器疯了,还是我就是那个。。。?,php,casting,Php,Casting,我继续遇到编写php时非常奇怪的行为。以下是一个例子: <?php date_default_timezone_set("Europe/Berlin"); $interval1 = (int) 336000; $interval2 = (int) 1459200; $interval3 = (int) 17403000; $interval4 = (int) 43205760; $interval5 = (int) 84299520; $week =  (int) 604800; ?&g

我继续遇到编写php时非常奇怪的行为。以下是一个例子:

<?php 
date_default_timezone_set("Europe/Berlin");
$interval1 = (int) 336000;
$interval2 = (int) 1459200;
$interval3 = (int) 17403000;
$interval4 = (int) 43205760;
$interval5 = (int) 84299520;
$week =  (int) 604800;
?>

你应该想想

PHP_INT_SIZE
整数的大小取决于平台,尽管通常的最大值约为20亿(即32位有符号)。64位平台的最大值通常约为9E18。PHP不支持无符号整数。整数大小可以使用常量PHP_INT_size确定,最大值可以使用自PHP 4.4.0和PHP 5.0.5以来的常量PHP_INT_MAX确定

当尝试从浮点数转换为整数时,如果浮点超出整数的边界(在32位平台上通常为+/-2.15e+9=2^31,在64位平台上通常为+/-9.22e+18=2^63),则结果未定义,因为浮点没有足够的精度给出精确的整数结果。没有警告,当这种情况发生时,甚至不会发出通知


尝试更改PHP_INT_SIZE常量,并告诉我们更改了什么

,您可以从PHP代码中的十六进制编辑器中看到,在intval/(INT)casting之前有一个不间断的空格:(第二个空格)

00000100:39 35 32 30 3B 0A 24 77 65 6B 20 3D 20
A0
69


去掉它,您的代码就会正常工作。

运行此命令时,我没有发现任何错误。PHP5.3.6你是对的,这很奇怪:没有八行代码。如果你包含
并用合适的编辑器打开它,你可能会有一些疯狂的字符。如果你在intval上遇到致命错误,那肯定是你的PHP解释器出了严重的问题。你能在hex编辑器中打开这个文件并发布一个涉及最后一次施放的部分的截图吗?这有什么关系??(这是一个反问…)谢谢你的回答!。。。。9223372036854775807==我在系统上得到的PHP_INT_MAX常量。除此之外,如果整数大小是个问题,为什么我没有得到最高值的错误呢?我想到了PHP_int_大小,因为PHP在使用较大整数的情况下的行为是,正如我所说的,未定义的(甚至未定义的),感谢很多人,这真是一些疯狂的东西:)我自己永远不会明白这一点!!
PHP_INT_SIZE