2012-06-14 11 views
6

żal pytaniem to, ale nie mogę znaleźć rozwiązania, które będą się tym -> 7000 do 7000.php przekształcanie formatowane int int

Używam intval() i Number_format(), ale to po prostu dać ME 7 nie 7000.

$myVal = '7,000'; 
echo intval($myVal); 

to zwraca 7

samo z number_format()

co robię źle?

+0

Czy Twoja instalacja php jest zlokalizowana w kraju, w którym ',' jest separatorem dziesiętnym? – gcochard

+0

Sprawdź swoją lokalizację na to, co @Greg powiedział, przy okazji, czy używasz systemu Windows? –

Odpowiedz

6

intval() nie będzie działał z ciągiem, który masz ze względu na przecinek. Można usunąć przecinek za pomocą str_replace() a następnie wywołanie intval() tak:

echo intval(str_replace(',', '', $myVal))

10

Jeśli używasz PHP> = 5.3 (lub mieć zainstalowany „Intl” extension, przynajmniej w wersji 1.0), wtedy może również użyć klasy NumberFormatter do przeanalizowania numeru lokalnego.

$myVal = '7,000'; 
$nf = new NumberFormatter("en_EN", NumberFormatter::DECIMAL); 

var_dump($nf->parse($myVal, NumberFormatter::TYPE_INT32)); 

# output: int(7000) 

Jeśli używasz wersji PHP mniejszej niż 5.3, lepiej używać @KevinS. rozwiązanie.

+0

To jest lepsza odpowiedź, dzięki! – thefreeman

Powiązane problemy