返回浮点而不是整数

问题描述:

/* returns tweetDetails */ 
function returnTweets() 
{ 
    $return = array(); 
    $url = $hashtagSearchUrl = "http://search.twitter.com/search.json?q=%23gencsengeleceksin&include_entities=1&result_type=recent&rpp=50"; 
    foreach(json_decode(file_get_contents($url))->results as $t) 
    { 
     $return[] = $t; 
    } 

    return $return; 
} 

/* assigns tweet details to a variable */ 
$ts = returnTweets(); 

foreach ($ts as $t) 
    echo $t->id."<br />"; 

这必须输出推文ID的列表。例如:返回浮点而不是整数

190914827918857531 
190914827918845655 
165456467265456156 

一般来说它的工作,但在一些服务器它的返回是这样的:

1.9090219393785E+17 

我怎样才能解决这个问题?

+1

将其转换为字符串。 – j08691 2012-04-13 21:02:20

+0

这里是我的猜测:http://*.com/questions/94591/what-is-the-maximum-value-for-a-int32 – Madbreaks 2012-04-13 21:02:28

+0

@ j08691,有什么建议吗? – Eray 2012-04-13 21:02:57

可能在32位服务器上。

获得财产id_str而不是id这将始终是一个字符串。

整数的大小取决于平台。您应该使用字符串而不是数字来操作该数据。

您需要使用id_str而不是id。 32位PHP(这是大多数人已安装的)不能处理大于32位的整数。

https://dev.twitter.com/docs/twitter-ids-json-and-snowflake

+0

从技术上讲,32位PHP不能处理大于32位的整数。 64位PHP可以。 – 2012-04-13 21:10:31