我在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命令吗?
答案 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中存储最准确的浮点数。这不是一个真正的问题,它是一个正确的行为。只需在显示时截断数字,或将其四舍五入。