1

PHP substr函数不接受从整数转换的字符串...:P

情况

如果我留下这样的代码,它可以工作:

<?php

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

?>

结果是对的:

00000080

问题

但是我从一个整数变量(来自数据库)中获得了这个密钥。所以结果是空的,类似于我从这段代码中得到的:

<?php

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

?>

结果是一个空白字符串。

我尝试了所有方法,例如(string) cast, substr($key."", 35, -1),但它不起作用。

有没有人有什么建议?

4

5 回答 5

3

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

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

于 2011-02-04T14:51:05.700 回答
1

该数字太大而不能成为 php 中的整数,请参阅手册

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

于 2011-02-04T14:51:54.093 回答
1

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

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

于 2011-02-04T14:52:39.803 回答
0

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

于 2011-02-04T14:50:49.320 回答
0

根本问题是当你分配它时,数字被转换为浮点数,因为它溢出了整数值。

于 2011-02-04T14:57:39.453 回答