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

问题描述:

的PHP SUBSTR函数不接受整数转换字符串...:PPHP SUBSTR - 第一个参数不接受整数

情况

如果我离开像代码这一点,它的工作原理:

<?php 

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

?> 

,结果是正确的:

00000080 

问题

但我得到一个整型变量此键(从数据库)。所以结果为零,并且类似于我从此代码得到的结果:

<?php 

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

?> 

而结果是一个空白字符串。

我什么都试过,像(串)铸造,SUBSTR($关键。 “” 35,-1),它不工作。

有没有人有任何建议?

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

让您的数据库查询投它作为一个字符串,并应解决您的问题

+1

+1的合理解决方案。 – horatio 2011-02-04 14:58:45

+0

你完全正确!非常感谢你! – 2011-02-04 15:52:06

strval()可能工作。检查这个相关SO帖子,在PHP中处理字符串和mysql: Converting an integer to a string in PHP

+0

嗨Girish!我尝试铸造(字符串)$ key和strval($ key)并且它不起作用...:P – 2011-02-04 15:50:31

+0

正如Baker先生在你的情况中指出int太大。 – 2011-02-04 16:36:57

的数量太大,是在PHP的整数,看到manual

在你的情况下,35110100840754000150550010000014301000000809将是类似于3.5110100840754E43(给出或带几位数字)。当你从位置35(在字符串结尾......之后)开始时,结果将是NULL

尝试在substr之后打印$ key。你会看到该函数后的数字已经为空。 的整数的范围是-2147483648到2147483647

应用类型转换中的值,转换为字符串,strval()或(字符串)$键

问题的根源在于,数转换当你分配它时,它会溢出整数值。