【发布时间】:2019-06-15 06:34:45
【问题描述】:
我正在使用 MailerLite API。
在 bash 中使用 curl 调用 api 我收到的用户 ID 为
“id”:413076286433501727
但是在php中
$groupsApi = (new \MailerLiteApi\MailerLite($apiKey))->groups();
foreach ($groupsApi->get() as $g) {
$subscribers = $groupsApi->getSubscribers($g->id);
foreach($subscribers as $sub) {
var_dump($sub->id);
var_dump('413076286433501727');
$formated1 = sprintf('%d', $sub->id);
$formated2 = sprintf('%.0f', $sub->id);
var_dump($formated1);
var_dump($formated2);
}
}
PHP 版本 7.2.9 Windows NT WINDOWS 6.3 build 9600(Windows 8.1 专业版)i586
float(4.130762864335E+17)
string(18) "413076286433501727"
string(11) "-1509842432"
string(18) "413076286433501696"
PHP 版本 7.0.33 Linux panel.myhosting.name 3.10.0-714.10.2.lve1.5.17.1.el7.x86_64 #1 SMP Tue May 22 10:39:25 EDT 2018 x86_64强>
int(413076286433501727)
string(18) "413076286433501727"
string(18) "413076286433501727"
string(18) "413076286433501696"
在Win32平台上获取正确值的方法是什么?
UPD:问题在 cmets 讨论后被编辑
【问题讨论】:
-
有些东西,转换很奇怪。试试
%d而不是%.0f,因为它是整数而不是浮点数。 -
你如何从 bash 中得到这个???
-
@aynber sprintf('%d', $sub->id) 返回字符串(11) "-1509842432"
-
您使用的是哪个 PHP 版本?你的 PHP 是 64 位版本的吗?
-
你不是从 long int 而是从 float 转换的。
标签: php