Я делаю FQL-вызовы, используя следующий URL, а затем делаю вызов curl.
$ url = 'https://api.facebook.com/method/fql.query?access_token='.$access_token.'&query='.rawurlencode($query).'&format=JSON';
и затем я передаю возвращенные данные через вызов json_decode
У меня есть этот запрос:
ВЫБРАТЬ имя, page_id, page_url ОТ страницы, ГДЕ page_id IN (ВЫБРАТЬ page_id ОТ page_admin, ГДЕ uid = $ uid)
, который возвращает список имен и страниц, для которых указанный UID является администратором.
В некоторых установках PHP (и я не смог сузить его), page_id превращается из длинного целого в научную нотацию - так что 174311849258492 возвращается как 1.7431184925849E 14, что, конечно, ломает вещи.
Поскольку я не могу воспроизвести это на своем сервере, я не уверен, где происходит преобразование. Покопавшись, я нашел предложение, которое делает это:
json_decode (preg_replace ('/: (\ d +,) /', ': "$ {1}",', $ response));
это исправит
Но почему некоторые json_decodes переводятся в научную нотацию без видимой причины?