2017-06-02 8 views
0

に取り組んでいないSUBSTR Iは、ユーザーのモバイルデバイスから緯度と経度を収集し、AJAXを介してPHPスクリプトに送信するJavaScriptを有します。変数には小数点が長いので、それらを切り捨てる必要がありますので、それぞれの場所のデータベース内の点のセットと比較することができます。 IOS上でchromeとoperaを使ってアンドロイドでうまく動作しますが、変数をトリムしないので、if文に常に負の値が表示されます。PHPは、サファリIOS

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"; 

だから、$緯度と$いれば、データベース内の値($ _SESSION [ 'LATと比較することができるようにトリミングされることになっているrawデバイスからの値と$ _SESSION「CLAT」と「clong」をしています']と長)

LAT $と$ _SESSION [' CLAT '] IOSデバイス上でechodときと同じです。これがうまくいかない理由はありますか?代わりがありますか?

+1

これはPHPが、おそらくあなたのクライアントスクリプトではありません、私はより正確な – GIJOW

+0

どのようにあなたの質問のタイトルを変更することをお勧め「のsubstr」はPHPコマンドです?? – user2044644

答えて

0

小数点の数を特定の値に設定する場合は、roundを使用します。私は1.234567890を使用している場合

round($mynumber, 6); 

、私は1.234568を取得します(それが最後の桁を四捨五入していることに注意してください。)

代わりに、あなたは適切に小数を比較することができます。以下は、6つの小数点に数値を丸めます。私はなぜそれを正しく行うようにプログラマーに教えることはとても難しいのか分かりません。 2つの10進数/浮動小数点/ 2重の数があり、それらが同じであるかどうかを確認したいとします。私は絶対差をとってそれを一定の精度と比較します...

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を使用しないことを強くお勧めします。

+0

あなたの2番目の解決策は私のために働いた、私はそれを行う方法を考えたことはありませんでしたが、私がやろうとしていることを達成するためのより良い方法のようです、ありがとう! – user2044644

関連する問題