0

str_replacePHPについて質問です。私がする時:

$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);与える:N52.2702777778

しかし、print_r ($Latcoorl);与える:N52.270277777800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

はい、それは多くのゼロを追加します。楽しみのためだけに、誰かがこの振る舞いを説明できますか?

print_r ($latrichting);

与える:N

print_r ($Lat);

これは奇妙な長い数字です。

おそらく str_replace コマンドではないと思いますか?

4

5 に答える 5

1
$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];

あけましておめでとう。

于 2009-10-10T21:43:47.713 に答える
1

文字列置換検索文字列には、「N」の前にスペースがありますが、ダンプされた値は N のように見えます。

ただし、すべてのゼロと関係があるかどうかはわかりません。

于 2009-10-10T21:49:43.830 に答える
0

実行した文字列操作では、0 は生成されません。0 は $lat から取得する必要があります。$latで何をしましたか?パイによる除算はありますか?PHP は、可能な限り正確な浮動小数点数を $lat に格納しようとします。それは実際には問題ではなく、正しい動作です。表示される数値を切り捨てるか、切り上げてください。

于 2009-10-12T04:19:35.983 に答える
0

私のシステムでは、このコードフラグメント:

<?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);
?>

次の結果が得られます。

:N52.2702777778:N52.2702777778

私の推測では、このコードの後に​​一連の 0 を出力する何かがあると思います。

于 2009-10-10T22:27:49.877 に答える
0

どうすればいいですか。すべてを数値として保持し、文字列モードに陥らないAnthonyの元の回答の単なるバリエーションです。

$Latcoorl = ($latrichting == "N") ? ($Lat) : (-1 * $Lat);
于 2009-10-10T23:03:17.710 に答える