2013-03-20 14 views
7

Viele andere scheinen dieses Problem gehabt zu haben, aber normalerweise mit einem MySQL-Datentyp verbunden.Konvertieren einer Zeichenfolge in eine Ganzzahl gibt 2147483647

Ich versuche, einen String in einen Integer wie folgt zu konvertieren:

$adGroupId = '5947939396'; 
$adGroupId = intval($adGroupId) 

jedoch die Integer 2147483647 zurückgegeben, unabhängig von der String-Eingang.

+7

denn das ist der int-Wert maximal ist. benutze float ... –

+1

möglich duplicate von [PHP: intval() äquivalent für Zahlen> = 2147483647] (http://stackoverflow.com/questions/990406/php-intval-equivalent-for-numbers-2147483647) –

+1

^^ Maximaler int-Wert für 32-Bit-Systeme. –

Antwort

13

Diese Zahl zu groß verwenden ist in einem Integer-Datentyp zu passen (der max Integer-Wert ist 2147483647, wie oben zu sehen). Converting it to a float instead will work:

$adGroupId = '5947939396'; 
$adGroupId = floatval($adGroupId) 
+0

Danke, obwohl floatval den String als gettype double, nicht integer liefert? – Boomfelled

+2

@ Boomfelled Das ist der Punkt. Ihre Zahl (Wasser) ist zu groß für eine ganze Zahl (Bucket), also ist die Verwendung von floatval wie die Verwendung eines größeren Buckets. Wenn Sie schließlich versuchen, diese Zahl in ein mysql-Integer-Feld einzufügen, müssen Sie auch den Typ dieses Feldes ändern oder Sie haben ein ähnliches Problem. – Mansfield

+0

Großartig, vielen Dank. – Boomfelled

4

Es passiert, weil 2147483647 der maximale Integer-Wert ist. Sie können floatval

$adGroupId = '5947939396'; 
$adGroupId = floatval($adGroupId); 
echo $adGroupId; 
Verwandte Themen