2013-03-20 9 views
7

Wiele osób zdaje się mieć ten problem, ale zwykle jest związane z typem danych MySQL.Konwertowanie ciągu znaków na liczbę całkowitą zwraca 2147483647

Próbuję przekonwertować ciąg do liczby całkowitej w ten sposób:

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

Jednak całkowita zwracana jest 2147483647, niezależnie od wejścia strun.

+7

ponieważ jest to maksymalna wartość int. użyj float ... –

+1

możliwy duplikat [PHP: intval() odpowiednik dla liczb> = 2147483647] (http://stackoverflow.com/questions/990406/php-intval-equivalent-for-numbers-2147483647) –

+1

^^ Maksymalna wartość int dla systemów 32-bitowych. –

Odpowiedz

13

Ta liczba jest zbyt duża, aby zmieścić się w typ danych Integer (maksymalna wartość całkowita wynosi 2147483647 jak widać powyżej). Converting it to a float instead will work:

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

Dzięki, chociaż floatval zwraca ciąg jako gettype double, a nie integer? – Boomfelled

+2

@Boomfelled Właśnie o to chodzi. Twój numer (woda) jest za duży na liczbę całkowitą (wiadro), więc użycie floatval przypomina użycie większego wiadra. Jeśli ostatecznie spróbujesz wstawić tę liczbę do pola liczby całkowitej mysql, będziesz również musiał zmienić typ tego pola lub będziesz mieć podobny problem. – Mansfield

+0

Świetnie, bardzo dziękuję. – Boomfelled

4

To się dzieje, ponieważ 2147483647 jest maksymalną wartością całkowitą. Można użyć floatval

$adGroupId = '5947939396'; 
$adGroupId = floatval($adGroupId); 
echo $adGroupId; 
Powiązane problemy