PHP Dize Float

4 Cevap php

Ben hiç PHP aşina değilim ve hızlı bir soru vardı.

Ben pricePerUnit @ ve invoicedUnits @ 2. değişkenler var. Burada değerlere, bu ayardır kodu:

$InvoicedUnits = ((string) $InvoiceLineItem->InvoicedUnits);
$pricePerUnit = ((string) $InvoiceLineItem->PricePerUnit);

Ben çıktı bu, ben doğru değerleri olsun. 5000 faturalı birimleri ve fiyat 1.00 diyelim.

Şimdi, toplam harcanan tutar göstermek gerekir. Ben bu ikisini çarpın zaman (beklendiği gibi, bu dizeleri) çalışmıyor.

Ama PHP değişkenleri dönüştürmek / / döküm ayrıştırmak için nasıl hiçbir ipucu var.

Ben ne yapmalıyım?

4 Cevap

$rootbeer = (float) $InvoicedUnits;

Sizin için bunu yapmalıyız. Çıkış Type-Juggling. Ayrıca okumalısınız String conversion to Numbers.

Sen floatval işlevi istiyorum http://us3.php.net/manual/en/function.floatval.php:

float floatval  ( mixed $var  ) - Gets the float value of a string.

<?php
 $var = '122.34343The';
 $float_value_of_var = floatval($var);
 echo $float_value_of_var; // 122.34343
?>

Peki, kullanıcı 1,00,000 yazarsanız o floatvar hata gösterecektir. So -

floatval(preg_replace("/[^-0-9\.]/","",$input));

Bu çok daha güvenilirdir.

Kullanımı:

$input = '1,03,24,23,434,500.6798633 this';
echo floatval(preg_replace("/[^-0-9\.]/","",$input));

Banyolarında biçimlendirme ile uğraşan olmayan önemsiz bir görevdir. İngiliz / Amerikan yazımla size Toplam bin artı 46 * 10-2 biçimlendirmek:

1,000.46

Ama almanya'da sen virgül ve noktayı değiştirmek istiyorsunuz:

1.000,46


This makes it really hard guessing the right number in multi-language applications.
I strongly suggest using Zend_Measure of the Zend Framework for this task. This component will parse the string to a float by the users language.