我正在使用以下代码来检索用户的朋友:
$fql_query_url = 'https://graph.facebook.com/fql?q=SELECT+uid,+name,+pic_square+FROM+user+WHERE+uid+IN+(SELECT+uid2+FROM+friend+WHERE+uid1+=+me())+order+by+name&access_token=' . $_SESSION['token'];
$fql_query_result = file_get_contents($fql_query_url);
$fql_query_obj = json_decode($fql_query_result, true);
它的工作正常,但对于任何超过11个数字的Facebook ID,它们会被渲染为1.xxxxxxxxxxxxxE + 14而不是1xxxxxxxxxxxxxx。 (例如:100000776800425变为1.0000077680042E + 14)。除了最后一位数字丢失外,这不会有问题。
令人讨厌的是,如果我在地址栏中插入查询URL,则不会更改ID。如果我查询“SELECT uid2 FROM friend WHERE uid1 = me()”,ID也不会被更改。
造成这种情况的原因是什么?如何解决这个问题?感谢。
编辑:
我至少设法确定在json_decode期间值被更改,但除此之外,什么都没有。
编辑2:
添加ini_set('precision',20)解决了它。
答案 0 :(得分:0)
php设置导致该值转换为int,缺少必要的长度来正确显示更长的Facebook ID。在脚本开头添加ini_set('precision',20)可将精度提高到20位。