我有一個包含地理數據的CSV。我製作了一個腳本,將其轉換爲數組並將其保存到數據庫中。但我想保存緯度和長度爲十進制。但作爲一個字符串的一些奇怪的原因它顯示一個值,但是當我將它轉換爲任何類型的浮動或decimail它顯示0?帶浮點(緯度,longituse)的字符串不能轉換爲浮點數 - 這表示0
ini_set('auto_detect_line_endings', TRUE);
$tmpName = $_FILES['fileToUpload']['tmp_name'];
$csvAsArray = array_map('str_getcsv', file($tmpName));
array_shift($csvAsArray); //removes first
array_pop($csvAsArray); //removes last
foreach ($csvAsArray as $k=>$v) {
$municipality = str_replace('"', "", $v[2]);
$city = str_replace('"', "", $v[3]);
$zip = str_replace('"', "", $v[4]);
$lat = $v[5];
$data = [
'country' => $v[0],
'province' => $v[1],
'municipality' => $v[2],
'city' => $v[3],
'nl_fourpp' => $v[4],
'lat' => $v[5],
'lng' => $v[6],
'date_created' => date('Y-m-d H:i:s')
];
var_dump($v[6]); // THIS SHOWS: string(15) "4.91666"
var_dump((float) $v[6]); // THIS SHOWS: float(0)
var_dump(floatval($v[6])); // THIS SHOWS: float(0)
var_dump(number_format($v[6])); // THIS SHOWS: Warning: number_format() expects parameter 1 to be float, string given in
//etc...
//save the fields
...............
}
數據陣列看起來像這樣(你可以看到它顯示的緯度和經度.....但是當我把它轉換爲一個數字,它只是顯示爲0?
Array
(
[country] => NL
[province] => Noord-Holland
[municipality] => Amsterdam
[city] => Amsterdam
[nl_fourpp] => 1000
[lat] => 52.34999
[lng] => 4.91666
[date_created] => 2017-10-21 07:18:21
)
1
編輯當我轉儲使用symfonys VAR自卸車我得到"\x005\x002\x00.\x003\x004\x009\x009\x009\x00"
但是當我VAR dumpt它我得到的「弦」號
源字符串似乎編碼在一些多字節編碼中。調整您的語言環境設置,使其與'setlocale()'函數的源文件編碼相匹配。至於'floatval()'的零結果,前導字符不會被識別爲數字(參見[字符串轉換爲數字](http://php.net/manual/en/language.types.string.php#language .types.string.conversion))。 –