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的方式也超过了最大整数值。 它可能会转换为浮点数,在这种情况下,您将失去准确性。
让您的数据库查询投它作为一个字符串,并应解决您的问题
strval()可能工作。检查这个相关SO帖子,在PHP中处理字符串和mysql: Converting an integer to a string in PHP
嗨Girish!我尝试铸造(字符串)$ key和strval($ key)并且它不起作用...:P – 2011-02-04 15:50:31
正如Baker先生在你的情况中指出int太大。 – 2011-02-04 16:36:57
的数量太大,是在PHP的整数,看到manual。
在你的情况下,35110100840754000150550010000014301000000809
将是类似于3.5110100840754E43
(给出或带几位数字)。当你从位置35
(在字符串结尾......之后)开始时,结果将是NULL
。
尝试在substr之后打印$ key。你会看到该函数后的数字已经为空。 的整数的范围是-2147483648到2147483647
应用类型转换中的值,转换为字符串,strval()或(字符串)$键
问题的根源在于,数转换当你分配它时,它会溢出整数值。
+1的合理解决方案。 – horatio 2011-02-04 14:58:45
你完全正确!非常感谢你! – 2011-02-04 15:52:06