PHP substr 无法在 Safari 上运行 IOS
PHP substr not working on Safari IOS
我有一个 javascript 从用户移动设备收集纬度和经度并通过 ajax 发送到 PHP 脚本。由于变量有很长的小数点,我需要它们 trimmed down 以便我可以将它们与数据库中每个位置的点集进行比较。使用 chrome 在 android 上工作正常,在 IOS 上运行它没有 trim 变量所以它总是对我的 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' 应该是 trimmed 以便它们可以与中的值进行比较数据库($_SESSION['lat'] 和 long)
$lat 和 $_SESSION['clat'] 在 IOS 设备上回显时相同。这是行不通的原因吗?有替代方案吗?
如果你想将小数点的位数设置为特定的数量,使用round。以下将数字四舍五入到小数点后 6 位:
round($mynumber, 6);
如果我使用 1.234567890,我将得到 1.234568(注意它四舍五入了最后一位。)
或者,您可以正确比较十进制数。我不知道为什么教程序员正确地做事这么难。假设我有两个 decimal/float/double 数字,我想看看它们是否相同。我取绝对差异并将其与准确度进行比较...
if(abs(a-b)<0.000001) // they are close enough to being the same
你能在查询中做到这一点吗?当然:
select * from sometable where abs(myfield-1.23456789)<0.00001
我建议正确地做,但你可以使用 round。我强烈建议不要使用 substr 来四舍五入数字。
我有一个 javascript 从用户移动设备收集纬度和经度并通过 ajax 发送到 PHP 脚本。由于变量有很长的小数点,我需要它们 trimmed down 以便我可以将它们与数据库中每个位置的点集进行比较。使用 chrome 在 android 上工作正常,在 IOS 上运行它没有 trim 变量所以它总是对我的 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' 应该是 trimmed 以便它们可以与中的值进行比较数据库($_SESSION['lat'] 和 long)
$lat 和 $_SESSION['clat'] 在 IOS 设备上回显时相同。这是行不通的原因吗?有替代方案吗?
如果你想将小数点的位数设置为特定的数量,使用round。以下将数字四舍五入到小数点后 6 位:
round($mynumber, 6);
如果我使用 1.234567890,我将得到 1.234568(注意它四舍五入了最后一位。)
或者,您可以正确比较十进制数。我不知道为什么教程序员正确地做事这么难。假设我有两个 decimal/float/double 数字,我想看看它们是否相同。我取绝对差异并将其与准确度进行比较...
if(abs(a-b)<0.000001) // they are close enough to being the same
你能在查询中做到这一点吗?当然:
select * from sometable where abs(myfield-1.23456789)<0.00001
我建议正确地做,但你可以使用 round。我强烈建议不要使用 substr 来四舍五入数字。