1)我想了解为什么当我在php中调用bigint
时,作为'string'
存储的数值数据被视为'string'
。
( 2)是否有诸如is_bigint();
for php这样的函数可以检查变量是否为bigint。
3)当数据类型乘以1或将0加到与数字和字母表混合的字符串中时,我如何检查数据类型?将返回'Notice: A non well formed numeric value encountered in line 2'
,而对现在乘以的数据类型调用gettype();
将返回:integer
发布于 2018-07-01 00:46:56
简单的答案是PHP没有bigint类型。数据库驱动程序,或者无论从哪里获取该值,都是将数据作为字符串提供给您,因为这是表示值的唯一可靠方法。
在64位系统上,PHP的int类型应该是一个带符号的64位整数;但是在32位系统上,它将是32位,因此您的值将不适合。您可以通过回显PHP_INT_MAX
内建常数来进行双重检查,这将使您可以在构建PHP时存储在整数中的最大值。
要判断该值是否为所有数字,您可以使用ctype_digit($value)
,但由于-
不是数字,所以这对负数不起作用。我所知道的最好的方法是使用正则表达式,例如preg_match('/^-?[0-9]+/', $value)
。
如果您的值适合(即介于PHP_INT_MIN
和PHP_INT_MAX
之间),则只需使用(int)$value
或intval($value)
将字符串转换为整数,而不需要使用+0
或*1
之类的技巧。
如果不这样做,您需要将它们作为浮点数来处理,如果一个操作的结果对于一个整数来说太大,但意味着存储它们不精确;或者使用任意精度的数学模块,比如GMP或BCMath,那么PHP就是这样做的。
https://stackoverflow.com/questions/51119454
复制相似问题