PHP substr不能在Safari IOS上运行

时间:2017-06-02 17:19:02

标签: javascript php ios safari substr

我有一个javascript,用于从用户移动设备收集经度和纬度,并通过ajax发送到PHP脚本。由于变量具有较长的小数点,我需要将它们修剪下来,以便将它们与我的数据库中每个位置的点集进行比较。在IOS上使用chrome和opera可以很好地工作,它根本不修剪变量,所以它总是对我的if语句显示负面。

list($lat,$long) = 
explode(',',htmlentities(htmlspecialchars(strip_tags($_GET['latlng']))));
echo 'Latitude: '.$lat.' Longitude: '.$long.'<br />';
$_SESSION['clat'] = substr($lat,0,-5);
$_SESSION['clong'] = substr($long,0,-4);

echo 'Latitude: '.$_SESSION['clat'].' Longitude: '.$_SESSION['clong'].'<br 
/>';
if($_SESSION['lat'] == $_SESSION['clat'] && $_SESSION['long'] == 
$_SESSION['clong']) {
echo "You are here";

所以$ lat和$ long是来自设备的原始值,$ _SESSION'clat'和'clong'应该被修剪,以便它们可以与数据库中的值进行比较($ _SESSION ['lat']和long )

在IOS设备上使用echod时,$ lat和$ _SESSION ['clat']是相同的。有什么理由不起作用吗?还有其他选择吗?

1 个答案:

答案 0 :(得分:0)

如果要将小数点数设置为特定数量,请使用round。以下内容将数字舍入为6个小数点:

round($mynumber, 6);

如果我使用1.234567890,我将获得1.234568(请注意它将最后一位数字舍入。)

或者,您可以正确地比较十进制数。我不知道为什么要教程序员正确地完成它是如此困难。假设我有两个十进制/浮点数/双数,我想看看它们是否相同。我采取绝对差异并将其与准确度进行比较......

if(abs(a-b)<0.000001) // they are close enough to being the same

你可以在查询中这样做吗?肯定的是:

select * from sometable where abs(myfield-1.23456789)<0.00001

我建议你做得正确,但你可以使用圆形。我强烈建议不要使用substr来完善数字。