Domanda

Ho una domanda su str_replace in PHP. Quando faccio:

$latdir = $latrichting.$Lat;

If (preg_match("/N /", $latdir)) {
    $Latcoorl = str_replace(" N ", "+",$latdir);
}
else {
    $Latcoorl = str_replace ("S ", "-",$latdir);
}

print_r($latdir);
print_r($Latcoorl);

print_r($latdir); dà: N52.2702777778

ma print_r ($Latcoorl); dà: N52.270277777800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

Sì, si aggiunge un sacco di zeri. Qualcuno può esplicativi, questo comportamento solo per il gusto di farlo?

print_r ($latrichting);

di dare: N

print_r ($Lat);

il numero lungo strana di questo danno.

Quindi, la sua, probabilmente non il comando str_replace, pensi?

È stato utile?

Soluzione

$latmin2 = bcdiv($latsec, 60, 20);
$latmin_total = $latmin + $latmin2;
$lat = bcdiv($latmin_total, 60, 20);

$latdir = array("N" => 1, "S" => -1);

$latcoorl = $latdir * $latdir[$latrichting];

Felice Anno Nuovo.

Altri suggerimenti

La stringa sostituire stringa di ricerca ha uno spazio prima del 'N' mentre il valore scaricato sembra che sia N:

Non so che cosa ha a che fare con tutti gli zeri però.

Sul mio sistema questo frammento di codice:

<?php
$latdir = ':N52.2702777778';

If (preg_match("/N /", $latdir)) {
    $Latcoorl = str_replace(" N ", "+",$latdir);
    }
    else {
        $Latcoorl = str_replace ("S ", "-",$latdir);
        }

print_r($latdir);
print_r($Latcoorl);
?>

ha pronunciato la seguente risultato:

:N52.2702777778:N52.2702777778

La mia ipotesi migliore è che hai qualcosa dopo questo codice che stampa una serie di 0.

Come lo farei; solo una variazione della risposta originale di Anthony che mantiene tutto come numerico e non scadere in modalità stringa.

$Latcoorl = ($latrichting == "N") ? ($Lat) : (-1 * $Lat);

Le operazioni sulle stringhe tu non genererà alcun 0s. Gli 0 devono venire da $ lat. Che cosa hai fatto con $ lat? ogni divisione per pi? PHP cercherà di conservare il più preciso numero di float possibile in $ lat. Questo non è davvero un problema, è un comportamento corretto. Basta troncare il numero quando visualizzato, o intorno ad esso in su.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top