我从表示位置的MySQL数据库中检索一些数据。它包括位置的纬度和经度。
在客户端,我使用HTML地理位置来获取用户的经度和纬度。这些值将提交给PHP脚本,该脚本以隐藏表单字段的形式检索数据。
我可以计算从用户位置到从数据库中检索到的位置的距离。
我需要对距离返回的数据进行排序。我试过这段代码
// First I loop over the results
foreach($data as $venue)
{
$venue['distance'] = calculateDistance(users_lat, users_long,
$venue['lat'], $venue['long']);
}
然后我尝试使用array_multisort按距离列排序
array_multisort($data['distance'], SORT_ASC, SORT_NUMERIC);
我收到了这个警告:
Warning: array_multisort(): Argument #1 is expected to be an array or a sort flag
var dump(前3个结果)
["Distance"]=> float(1.5)
["Distance"]=> float(2)
["Distance"]=> float(1.7)
我仍然收到警告。
答案 0 :(得分:0)
看起来问题与$ data中的数据有关,而不是循环:
$aData[ 'distance' ][] = 2344234;
$aData[ 'distance' ][] = 54345;
$aData[ 'distance' ][] = 364646;
$aData[ 'distance' ][] = 5477474457;
$aData[ 'distance' ][] = 34;
$aData[ 'distance' ][] = 1;
$aData[ 'distance' ][] = 34556;
var_dump( $aData );
array_multisort( $aData['distance'], SORT_ASC, SORT_NUMERIC );
var_dump( $aData );
答案 1 :(得分:0)
你要覆盖$venu
的值,试试这个;
$ result = array();
foreach($data as $venue)
{
$result['distance'][] = calculateDistance(users_lat, users_long,
$venue['lat'], $venue['long']);
}
然后:
array_multisort($result['distance'][], SORT_ASC, SORT_NUMERIC);