String conversion to numbers上的PHP手册说:
该值由字符串的初始部分给出。如果字符串以有效数字数据开头,则这将是使用的值。否则,该值将为0(零)。
这意味着当字符串转换为数字时,除字符串开头的数字,加号或减号以外的任何内容都应返回0
。然而,(一些)字符串开头的空格被忽略:
echo intval(" 3"); // 3
echo intval("
3"); // 3
intval()
和(int)
这种行为记录在哪里?
答案 0 :(得分:0)
观察到的行为很大程度上没有记录。空间剥离可能取决于C中的strtod()
,它应使用isspace()
。
integer casting的通用规则适用。
点击链接(删除链接):
要将值显式转换为整数,请使用
(int)
或(integer)
强制转换。但是,在大多数情况下,不需要强制转换,因为如果运算符,函数或控制结构需要整数参数,则会自动转换值。也可以使用intval()
函数将值转换为整数。
所以它看起来像是铸造而intval()
是等价的。并略低于上面的引用:
来自字符串
行。对我们来说没有什么真正有用的,除了这个小小的注释:
有关此转换的更多信息,请参见strtod(3)的Unix手册页。
再次关注链接线程,选择strtod()
specified in POSIX的版本,即UNIX的API标准。
这些函数应将
nptr
指向的字符串的初始部分转换为double
,float
,以及<强>long double
分别代表。首先,他们将输入字符串分解为三个部分: 1.一个初始的,可能是空的白色空格字符序列(由isspace()
指定) ...
常识告诉我们这只应用于浮点数,因为strtod()
在C中返回一个浮点数,但数字解析和内部表示在PHP中是古怪的,就像这种语言中的几乎所有内容一样。谁知道它是如何真正起作用的。最好不要知道。