Ich habe eine CSV mit Geodaten. Ich habe ein Skript erstellt, das dieses in ein Array umwandelt und es in der Datenbank speichert. aber ich möchte den Lat speichern und lange als Dezimalzahl. aber aus irgendeinem seltsamen Grund als String zeigt es einen Wert, aber wenn ich es in einen beliebigen Float oder Dezimail konvertieren, zeigt es 0?string mit float (latitude, longituse) kann nicht als float umgewandelt werden - das zeigt 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
...............
}
das Datenfeld sieht wie folgt aus (wie man sieht es zeigt die lat und lng ..... aber wenn ich es in eine Zahl umwandeln es zeigt nur 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
EDIT, wenn ich Dump die var symfonys var dumper mit i bekommen "\x005\x002\x00.\x003\x004\x009\x009\x009\x00"
aber wenn ich dumpt es var ich erhalte die "string" Nummer
Die Quelle Zeichenfolge codiert zu sein scheint in einigen Multibyte-Codierung. Passen Sie Ihre Gebietsschemaeinstellungen so an, dass sie der Quelldateicodierung mit der Funktion 'setlocale()' entsprechen. Was das Null-Ergebnis von 'floatval()' betrifft, werden die führenden Zeichen nicht als Zahlen erkannt (siehe [String-Konvertierung in Zahlen] (http://php.net/manual/en/language.types.string.php#language) .types.string.conversion)). –