0

I'm using MailerLite API.

Calling api with curl in bash I receive user id as

"id":413076286433501727

But in 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 Version 7.2.9 Windows NT WINDOWS 6.3 build 9600 (Windows 8.1 Professional Edition) i586

float(4.130762864335E+17)
string(18) "413076286433501727"
string(11) "-1509842432"
string(18) "413076286433501696"

PHP Version 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"

What is the way to receive correct value on Win32 platform?

UPD: question was edited after discussion in comments

dr0zd
  • 1,368
  • 4
  • 18
  • 28

1 Answers1

0

Unexpected result for me

$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 Version 7.2.9 Windows NT WINDOWS 6.3 build 9600 (Windows 8.1 Professional Edition) i586

float(4.130762864335E+17)
string(18) "413076286433501727"
string(11) "-1509842432"
string(18) "413076286433501696"

PHP Version 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"

Thank you @Dharman and thank you everybody

dr0zd
  • 1,368
  • 4
  • 18
  • 28
  • Could you please [edit your question](https://stackoverflow.com/posts/54297270/edit) – Dharman Jan 21 '19 at 21:07
  • It is overflowing 32bit int on Windows. PHP trying to be smart is converting the value into a float instead of letting it overflow in the first example. – Dharman Jan 21 '19 at 21:09