значения для идентификатора Facebook неправильно форматируются в PHP - PullRequest
0 голосов
/ 18 ноября 2011

Я использую следующий код для извлечения друзей пользователя:

$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);

Он работает просто отлично, за исключением того, что для любых идентификаторов Facebook длиной более 11 номеров они отображаются как 1.xxxxxxxxxxxxxE+14 вместо 1xxxxxxxxxxxxxx.(например, 100000776800425 вместо этого становится 1.0000077680042E + 14).Это не будет проблемой, за исключением того, что последняя цифра будет потеряна.

К сожалению, если я вставлю URL-адрес запроса в адресную строку, идентификаторы не изменятся.Идентификаторы также не меняются, если я запрашиваю «ВЫБЕРИТЕ uid2 ОТ ДРУГОГО ГДЕ uid1 = me ()».

Что вызывает это и как мне обойти это?Спасибо.

Редактировать:

Мне по крайней мере удалось определить, что значения меняются во время json_decode, но кроме этого, ничего.

Редактировать 2:

Добавление ini_set ('precision', 20) решило это.

1 Ответ

0 голосов
/ 05 декабря 2011

Настройки php приводят к преобразованию значения в целое число, которому не хватает необходимой длины для правильного отображения более длинных идентификаторов Facebook.Добавление ini_set ('precision', 20) в начале скрипта увеличило точность до 20 цифр.

...