gpt4 book ai didi

php - `intval()` 和 `(int)` 如何处理空格?

转载 作者:搜寻专家 更新时间:2023-10-31 22:01:51 25 4
gpt4 key购买 nike

String conversion to numbers 上的 PHP 手册说:

The value is given by the initial portion of the string. If the string starts with valid numeric data, this will be the value used. Otherwise, the value will be 0 (zero).

这意味着当字符串转换为数字时,除数字以外的任何字符串开头的加号或减号都应返回 0。然而,字符串开头的(某些)空格会被忽略:

echo intval("     3");  // 3
echo intval("
3"); // 3

是否有 intval()(int) 去除的任何类型的空白?

此行为记录在何处?

最佳答案

观察到的行为在很大程度上没有记录。可能空间剥离取决于 C 中的 strtod(),它应该使用 isspace() .

intval() manual说:

The common rules of integer casting apply.

点击链接(链接已删除):

To explicitly convert a value to integer, use either the (int) or (integer) casts. However, in most cases the cast is not needed, since a value will be automatically converted if an operator, function or control structure requires an integer argument. A value can also be converted to integer with the intval() function.

所以看起来转换和 intval() 是等价的。在上面的引用下面一点:

From strings

See String conversion to numbers

好的。对我们没有什么真正有用的,除了这个小注释:

For more information on this conversion, see the Unix manual page for strtod(3).

再次按照链接线程,选择strtod() specified in POSIX的版本,UNIX 的 API 标准。

These functions shall convert the initial portion of the string pointed to by nptr to double, float, and long double representation, respectively. First, they decompose the input string into three parts: 1. An initial, possibly empty, sequence of white-space characters (as specified by isspace()) …

常识告诉我们,这应该只适用于 float ,因为 strtod() 在 C 中返回一个 float ,但数字解析和内部表示在 PHP 中是古怪的,就像在这种语言。谁知道它到底是如何工作的。最好不要知道。

关于php - `intval()` 和 `(int)` 如何处理空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27581035/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com