PHP substr-第一个参数不接受整数

PHP substr-第一个参数不接受整数,php,integer,substring,substr,Php,Integer,Substring,Substr,PHPsubstr函数不接受从整数转换的字符串…:P 形势 如果我像这样保留代码,它会工作: <?php $key = '35110100840754000150550010000014301000000809'; echo substr($key, 35, -1); ?> 问题 但是我从一个整数变量(从数据库)中得到这个键。结果为空,与我从代码中得到的结果相似: <?php $key = 3511010084075400015055001000001430100000

PHPsubstr函数不接受从整数转换的字符串…:P

形势

如果我像这样保留代码,它会工作:

<?php

$key = '35110100840754000150550010000014301000000809';
echo substr($key, 35, -1);

?>
问题

但是我从一个整数变量(从数据库)中得到这个键。结果为空,与我从代码中得到的结果相似:

<?php

$key = 35110100840754000150550010000014301000000809;
echo substr($key, 35, -1);

?>

结果是一个空白字符串

我尝试了一切,比如(字符串)铸造,substr($key.“,35,-1),但都不起作用

有人有什么建议吗?

strval()可能有用。查看这篇相关的SO帖子,在PHP中处理字符串和mysql: strval()可能会起作用。查看这篇相关的SO帖子,在PHP中处理字符串和mysql:

如果数据库返回的是整数值,则它受32位(如果您在64位服务器上,则为64位)限制。35110100840754000150550010000014301000000809方式超过了64位服务器的最大整数值。 它可能会转换为浮点,在这种情况下,您将失去准确性


让您的数据库查询将其转换为字符串,这将解决您的问题

如果数据库返回的是整数值,那么它将受到32位(或64位服务器上的64位)限制。35110100840754000150550010000014301000000809方式超过了64位服务器的最大整数值。 它可能会转换为浮点,在这种情况下,您将失去准确性


让您的数据库查询将其转换为字符串,这将解决您的问题

在php中,数字太大,不能是整数,请参阅


在您的例子中,
35110100840754000150550010000014301000000809
,将类似于
3.5110100840754E43
(给出或获取几个数字)。当您从位置
35
(字符串结束后…)开始时,结果将是
NULL

该数字太大,在php中不能是整数,请参阅


在您的例子中,
35110100840754000150550010000014301000000809
,将类似于
3.5110100840754E43
(给出或获取几个数字)。当您从位置
35
(字符串结束后…)开始时,结果将是
NULL

尝试在substr之后打印$key。您将看到函数后面的数字已经为空。 整数的范围为-2147483648到2147483647


在值中应用类型转换,转换为字符串、strval()或(string)$key

尝试在substr之后打印$key。您将看到函数后面的数字已经为空。 整数的范围为-2147483648到2147483647


在值中应用类型转换,转换为字符串、strval()或(string)$key

根本问题是,当您分配该数字时,因为它溢出了整数值而将其转换为浮点。

根本问题是,当您分配该数字时,因为它溢出了整数值而将其转换为浮点。

嗨,古斯塔沃!我试着铸造(字符串)$key和strval($key),但没有成功…:P但你在范围问题上是对的!:)非常感谢。巴西万岁!嗨,古斯塔沃!我试着铸造(字符串)$key和strval($key),但没有成功…:P但你在范围问题上是对的!:)非常感谢。巴西万岁!嗨,女孩!我试着铸造(字符串)$key和strval($key),但没有成功…:就像贝克先生说的那样,整数太大了。嗨,女孩!我试着铸造(字符串)$key和strval($key),但没有成功…:PYup正如贝克先生在你的例子中所说的,int太大了。
<?php

$key = 35110100840754000150550010000014301000000809;
echo substr($key, 35, -1);

?>