繁体   English   中英

带有浮点数的字符串(纬度,经度)不能转换为浮点数-显示0

[英]string with float (latitude, longituse) can not be cast as float - this shows 0

我有一个包含地理数据的CSV文件。 我制作了一个脚本,将其转换为数组并将其保存在数据库中。 但我想将经纬度保存为小数。 但是由于某种奇怪的原因,它显示为一个字符串,但是当我将其转换为任何类型的float或decimail时,它显示为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
    ...............
}

数据数组看起来像这样(如您所见,它显示了lat和lng .....但是当我将其转换为数字时,它仅显示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 dumper转储var时进行编辑,我得到"\\x005\\x002\\x00.\\x003\\x004\\x009\\x009\\x009\\x00"但是当我var dumpt时,我得到了“字符串”数字

更改

var_dump(number_format($v[6]));

var_dump(number_format((float)$v[6]));

好的仍然不知道问题出在哪里,但是我通过做来解决了

    public function FixLatLngStr($str) {
    $x = explode("\x00", $str);
    array_shift($x); //removes first
    array_pop($x); //removes last
    return implode("",$x);
}

这将返回一个“正常”的浮点值

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM