php数据类型:数字格式的字符串
在 PHP 中,即使数据被定义为字符串,但数据如果可以解释为数字,PHP依然会自动将其解释为数字。
它被自动解释为整数的“int”和小数的“float”。
根据 PHP 版本的不同,操作的行为略有不同,但PHP8.0.0 或更高版本会根据以下规范进行解释。
WHITESPACES \s*
LNUM [0-9]+
DNUM ([0-9]*)[\.]{LNUM}) | ({LNUM}[\.][0-9]*)
EXPONENT_DNUM (({LNUM} {DNUM}) [eE][+-]? {LNUM})
INT_NUM_STRING {WHITESPACES} [+-]? {LNUM} {WHITESPACES}
FLOAT_NUM_STRING {WHITESPACES} [+-]? {EXPONENT_DNUM} {WHITESPACES}
NUM_STRING ({ INT_NUM_STRING } | {FLOAT_NUM_STRING})但是这有点令人困惑,所以让我们看一个具体的例子。
将字符串解释为数字的示例是在算术运算(例如加法)中指定字符串时,例如:
$foo = 1 + "10.5" ;
正常情况下数字和字符串是不能相加的,但是在PHP中如果字符串可以解释为数字,则会自动转换为数字进行计算。
在本例中结果为 1+10.5=11.5。
即使是以下记数法,也会自动解释为浮点型。
$foo = 1 + "-1.3e3";
如果字符串不能被解释为这样的数字:
$foo = 1 + "bob-1.3e3";
在这种情况下,PHP 将引发“TypeError”错误。
在PHP8.0.0之前的版本中,所有不能解释为数字的字符串都被解释为“0”,导致 1 + 0 = 1,这意外地导致了 bug 。
这一点在PHP8.0.0中发生了变化。
接下来在“以数字开头的字符串”的情况下,将开头的数字解释为数字,同时发出警告。
$foo = 1 + "10 只小猪" ;
例如在此示例中,开头的“10”部分被解释为数字,并计算 1 + 10 并带有 E_WARNING 警告。
这些例子也是如此:
$foo = 4 + "10.2 只小猪" ; $foo = "10.0 只猪 " + 1 ; $foo = "10.0 只小猪" + 1.0 ;
顺便说一句,在 PHP8.0.0 之前的版本中,生成的警告是 E_NOTICE,它的错误级别低于 E_WARNING。
在PHP中,当需要将字符串解释为数字时,流程如下:
1.如果字符串是一个数字并且它在 int 类型的范围内(由 PHP_INT_MAX 定义),它会解析为一个 int,否则它会解析为浮点数。
首先确定字符串是否可以解释为数字。
如果可以解释为数字且在int范围内,则解释为int类型。

如果超出 int 的范围,将被解释为 float 类型。
2.如果上下文允许数字格式字符串从头开始,并且值为字符串,则解析如下:
字符串的前导部分是数字格式字符串,它是int类型,在(由 PHP_INT_MAX 定义),它解析为一个 int。否则它会解析为浮点数。除此之外,它还会引发错误级别 E_WARNING。
接下来确定字符串是否以数字开头。
如果它以数字开头,并且数字在 int 范围内,则被解释为 int 类型。
如果超出 int 的范围,将被解释为 float 类型。
3.如果字符串不是数字,则抛出 TypeError。
如果字符串不能被解释为数字,则引发 TypeError。
本文来源:词雅网
本文地址:https://www.ciyawang.com/php-float-55.html
本文使用「 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 」许可协议授权,转载或使用请署名并注明出处。
相关推荐
-
Array_combine函数:让数组合并更简单
引言作为一名程序员,我们经常需要合并两个或多个数组。这时候,一个非常方便的函数就出现了,那就是array_combine函数。什么是array_combine函数?array_combine函数是PH...
-
使用PHP读取本地文件的方法
对于需要处理本地文件的PHP应用程序,读取本地文件是必不可少的操作。本文将介绍如何使用PHP读取本地文件。使用file_get_contents函数读取本地文件file_get_contents函数是...
-
PHP Cookies设置:了解cookie是如何工作的
在Web开发中,cookie是一种常见的技术,可以帮助我们保存用户信息,跟踪用户行为和提供个性化体验。在本文中,我们将深入探讨PHP cookies的设置。1. 什么是cookie?cookie是一种...
-
php获取当前月份及相关应用
在PHP中,获取当前月份的方法非常简单。只需要使用date()函数,并指定参数为“m”即可。代码如下:$month = date("m"); echo&nbs...
-
使用PHP的strip_tags()函数从字符串中去除HTML标签
strip_tags()函数可以从字符串中去除HTML标签。请注意,使用allow参数允许的HTML标记不会被剥离,但通常HTML标记总是被剥离。 顺便说一句,它有一个二...
-
如何使用PHP读取文件的6种方法
总结了用PHP读取文件的方法。 试着用6种方法读入文件。 file函数...
-
在PHP中检查文件存在的两种方法!(is_file)
我正在写如何检查 PHP 中是否存在“具有指定路径的文件”。 您可以使用以下两个函数来检查文件路径是否存在。...
-
通俗易懂的讲解nl2br()函数,将换行代码转换成br标签
这次,我将解释将换行字符转换为br标签的nl2br函数! 它非常容易使用! 但是,如果nl2br()函数使用不正确,它可能无法正确转换,所以需要注意!...
-
使用pathinfo函数轻松获取扩展名和文件名
你是否遇到过只想从文件路径中提取文件名或扩展名的情况? 我认为有多种方法,例如使用split分隔符拆分文件路径或使用substr函数提取文件路径。 但是...
-
使用PHP的is_null()函数检查变量是否为NULL
使用PHP的is_null()函数检查变量是否为NULL。 NULL表示没有值,不同于“0”或空字符串。 is_null()函数允许您检查变量是否为NU...
词雅网