Просто вопрос по поводу str_replace
-
20-09-2019 - |
Вопрос
У меня есть вопрос о str_replace
в PHP.Когда я делаю:
$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.270277777800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000
Да, это добавляет много нулей.Может ли кто-нибудь объяснить такое поведение просто ради развлечения?
print_r ($latrichting);
дайте:Н
print_r ($Lat);
Это странное длинное число.
Вы думаете, это, вероятно, не команда str_replace?
Решение
$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];
С Новым Годом.
Другие советы
В вашей строке поиска замены строки есть пробел перед «N», а выгруженное значение выглядит так, как будто это N:
Хотя не уверен, какое отношение это имеет ко всем нулям.
В моей системе этот фрагмент кода:
<?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.
Как бы я это сделал;просто вариант оригинального ответа Энтони, в котором все сохраняется в числовом виде и не переходит в строковый режим.
$Latcoorl = ($latrichting == "N") ? ($Lat) : (-1 * $Lat);
Выполненные вами строковые операции не будут генерировать 0.0 должны исходить от $lat.Что ты сделал с $lat?любое деление на число пи?PHP попытается сохранить максимально точное число с плавающей запятой в $lat.Это не проблема, это правильное поведение.Просто усеките число при отображении или округлите его в большую сторону.