关于str_replace的问题

时间:2009-10-10 21:23:07

标签: php string str-replace

我在PHP中有一个关于str_replace的问题。当我这样做时:

$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.27027777780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

是的,它增加了很多零。有人可以解释这种行为只是为了它的乐趣吗?

print_r ($latrichting);

给出:N

print_r ($Lat);

这给了奇怪的长号。

你认为它可能不是str_replace命令吗?

5 个答案:

答案 0 :(得分: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];

新年快乐。

答案 1 :(得分:1)

你的字符串替换搜索字符串在'N'之前有一个空格,而转储的值看起来像是N:

不确定它与所有零有什么关系。

答案 2 :(得分: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的系列。

答案 3 :(得分:0)

我该怎么做;只是Anthony的原始答案的变体,它将所有内容保持为数字并且不会进入字符串模式。

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

答案 4 :(得分:0)

您执行的字符串操作不会生成任何0。 0必须来自$ lat。你用$ lat怎么办? pi的任何划分? PHP将尝试在$ lat中存储最准确的浮点数。这不是一个真正的问题,它是一个正确的行为。只需在显示时截断数字,或将其四舍五入。