2017-04-20 17 views
1

我正在導入Excel文件。PHP - 隱式類型處理不起作用?

該文件具有混合的數據類型 - 項目代碼,貨幣值,日期。

該項目的代碼可以有前導零,所以我使用:

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

正如你所期望的,這是保留前導零,並且還保留了數字格式:12,345.00

的問題是我們需要一些浮點格式的數字來對它們執行操作。

由於某些原因,PHP不執行隱式類型轉換。

例如爲:

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

這將返回:42.我希望它返回42712.00。

這是怎麼發生的?

使用excel文件,我們只知道哪一列包含項目代碼。其他列可以是任何東西,所以我不能僅僅解析它們。我們通過文件中的標題行來標識它們。

理想情況下,我們需要隱式類型轉換才能工作。

有什麼建議嗎?

回答

0

如果您嘗試在PHP中使用像「22,345.43」這樣的字符串作爲float,它將丟棄第一個逗號後面的所有內容並將其轉換爲22.如果您嘗試使用貨幣格式化字符串,如「$ 22,234.45」它將被轉換爲0

爲了避免這種情況,你需要這個功能: http://php.net/manual/es/function.floatval.php#114486

注:你不需要floatval,你需要使用toFloat($ NUM)在第一個「用戶貢獻」的說明。

該函數將帶有任何格式化數字的字符串,檢測最後一個點或逗號,並使用最後一個分隔符來解析數字。該函數也會忽略除數字之外的所有內容,所以刪除貨幣和數千個分隔符是非常有用的。

這不是一個原生的PHP函數,因此您必須在代碼中包含該函數才能使用它。