我有这个功能getDistance()
。while 循环内的函数,通过使用坐标(纬度-经度)计算 2 个用户之间的距离,并将距离以米为单位findDistance()
返回给 var 。是用户第一次提交的字符串,是从数据库中调用的字符串。我希望能够从我的数据库中保存所有用户的名称,其中的条件为真,关于提交数据的新用户与数据库内旧用户的距离之和。问题是保存了从数据库调用的名字,并且循环继续进行多次,甚至没有考虑限制。例如,如果调用的名字$djson
$distance
$user_old["distance"]
$query
$matched_names
if()
$matched_names
if()
$user
是“迈克”,$user
有 5 行,那么输出将是:Mike,Mike,Mike,Mike,Mike
。
我想我在内部工作的方式上犯了一些错误,而..
<?php
public function getDistance($uuid, $name, $distance, $latstart, $lonstart, $latend, $lonend, $gcm_regId) {
$query = sprintf("SELECT uid, gcm_regid, name, distance,latstart, lonstart, latend, lonend FROM user_demand WHERE latstart='%s' AND lonstart='%s'",
mysql_real_escape_string($latstart),
mysql_real_escape_string($lonstart));
$user = mysql_query($query);
$no_of_rows = mysql_num_rows($user);
$user_old = mysql_fetch_assoc($user);
while( $user_old = mysql_fetch_assoc($user)) {
$djson = $this->findDistance($latend,$lonend,$user_old["latend"],$user_old["lonend"] );
if ($user_old["distance"] + $distance >= $djson) {
$match = $this ->df->addUserMatch($user_old['gcm_regid'],$user_old['name'],$gcm_regId,$name);
$matched_names = array_fill(0,$no_of_rows,$user_old['name']);
$matched_gcmz = array_fill(0,$no_of_rows,$user_old['gcm_regid']);
}
}
$registatoin_ids = array($gcm_regId);
$message = array("names" =>$matched_names,"gcm" => $matched_gcmz);
$result = $this ->gcm->send_notification($registatoin_ids, $message);
}
?>