SQL bigint 数据类型被 gettype() 视为字符串;功能。为什么?
SQL bigint data type seen as string by gettype(); function. why?
1) 我想了解为什么当我在 php 中调用 gettype();
时,存储为 bigint
的数字数据被视为 'string'
。
2) php 是否有函数 is_bigint();
可以检查变量是否为 bigint。
3) 当它是 bigint 时,我如何检查数据类型,因为乘以 1 或将 0 添加到与数字和字母混合的字符串将重新运行 'Notice: A non well formed numeric value encountered in line 2'
并在现在相乘的数据上调用 gettype();
输入将 return:integer
简单的回答是 PHP 没有 bigint 类型。数据库驱动程序,或者无论您从何处获取该值,都会以字符串形式为您提供数据,因为这是表示该值的唯一可靠方式。
在64位系统上,PHP的int类型应该是有符号的64位整数;但在 32 位系统上,它将是 32 位的,因此您的值不适合。您可以通过回显 PHP_INT_MAX
built-in constant 来仔细检查,这会为您提供可以在 PHP.
构建中存储在整数中的最大值
要判断该值是否全部为数字,您可以使用 ctype_digit($value)
,但这不适用于负数,因为 -
不是数字。我知道的最好方法是使用正则表达式,例如preg_match('/^-?[0-9]+/', $value)
.
如果您的值合适(即介于 PHP_INT_MIN
和 PHP_INT_MAX
之间),您可以将字符串转换为带有 (int)$value
或 intval($value)
的整数,不需要对于像 +0
或 *1
.
这样的技巧
如果他们不这样做,您将需要将它们作为浮点数处理,如果运算结果对于整数来说太大,这就是 PHP 所做的,但这意味着不精确地存储它们;或使用任意精度的数学模块,如 GMP or BCMath.
1) 我想了解为什么当我在 php 中调用 gettype();
时,存储为 bigint
的数字数据被视为 'string'
。
2) php 是否有函数 is_bigint();
可以检查变量是否为 bigint。
3) 当它是 bigint 时,我如何检查数据类型,因为乘以 1 或将 0 添加到与数字和字母混合的字符串将重新运行 'Notice: A non well formed numeric value encountered in line 2'
并在现在相乘的数据上调用 gettype();
输入将 return:integer
简单的回答是 PHP 没有 bigint 类型。数据库驱动程序,或者无论您从何处获取该值,都会以字符串形式为您提供数据,因为这是表示该值的唯一可靠方式。
在64位系统上,PHP的int类型应该是有符号的64位整数;但在 32 位系统上,它将是 32 位的,因此您的值不适合。您可以通过回显 PHP_INT_MAX
built-in constant 来仔细检查,这会为您提供可以在 PHP.
要判断该值是否全部为数字,您可以使用 ctype_digit($value)
,但这不适用于负数,因为 -
不是数字。我知道的最好方法是使用正则表达式,例如preg_match('/^-?[0-9]+/', $value)
.
如果您的值合适(即介于 PHP_INT_MIN
和 PHP_INT_MAX
之间),您可以将字符串转换为带有 (int)$value
或 intval($value)
的整数,不需要对于像 +0
或 *1
.
如果他们不这样做,您将需要将它们作为浮点数处理,如果运算结果对于整数来说太大,这就是 PHP 所做的,但这意味着不精确地存储它们;或使用任意精度的数学模块,如 GMP or BCMath.