我有一个包含地理数据的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))。 –