2017-04-20 3 views
1

Ich importiere eine Excel-Datei.PHP - Implizite Typbehandlung funktioniert nicht?

Die Datei enthält gemischte Datentypen - Artikelcode, Währungswerte, Datumsangaben.

Die Itemcodes können Nullen haben führende, also verwende ich:

$objPHPExcel->getActiveSheet()->toArray('', false, true, false); 

Wie man erwarten würde, dies die führenden Nullen wird beibehalten, und auch Nummer beibehalten Formatierung: 12,345.00

Die Problem ist, dass wir bestimmte Zahlen im Float-Format benötigen, um Operationen an ihnen auszuführen.

Aus irgendeinem Grund führt PHP keine implizite Typkonvertierung durch.

z.B .:

$value = "21,356.00"; 
$newvalue = $value * 2; 

Das gibt: 42. Ich erwartete es 42.712,00 zurückzukehren.

Warum passiert das?

Mit der Excel-Datei wissen wir nur, welche Spalte die Artikelnummern enthält. Die anderen Spalten können alles sein, also kann ich nicht einfach über alle hinweg schweben. Wir identifizieren sie anhand der Kopfzeile in der Datei.

Idealerweise müssen wir implizit Typ Umwandlung in Arbeit.

Irgendwelche Vorschläge?

Antwort

0

Wenn Sie versuchen, eine Zeichenfolge wie "22,345.43" als Float in PHP zu verwenden, wird alles hinter dem ersten Komma verworfen und in eine 22 konvertiert. Wenn Sie versuchen, eine Währungsformatierte Zeichenfolge wie "$ 22,234.45" zu verwenden es wird auf 0

umgewandelt werden, um dies zu vermeiden, müssen Sie diese Funktion: http://php.net/manual/es/function.floatval.php#114486

Hinweis: Sie nicht floatval brauchen, müssen Sie toFloat ($ num) in der verwenden erste "Benutzer-beigetragen" -Note.

Diese Funktion akzeptiert einen String mit einer beliebigen formatierten Zahl, erkennt den letzten Punkt oder das letzte Komma und verwendet dieses letzte Trennzeichen, um die Zahl zu analysieren. Die Funktion ignoriert auch alles außer Ziffern, daher ist es nützlich, Währungen und Tausendertrennzeichen zu entfernen.

Es ist keine native PHP-Funktion, daher müssen Sie diese Funktion in Ihren Code aufnehmen, um sie verwenden zu können.