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.2702777778000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

是的,它添加了很多零。有人可以仅仅为了好玩而解释这种行为吗?

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

在我的系统上这个代码片段:

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

我会怎么做;只是安东尼原始答案的一种变体,它将所有内容都保留为数字并且不会进入字符串模式。

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

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

于 2009-10-12T04:19:35.983 回答