Php 从数组中排序数据库
我创建了一个数据库,并在网上找到了一个代码,可以让你搜索一个邮政区号或城市,它会在数据库中查找距离搜索地点这么远的企业。我的问题是,在查询之后,我希望显示的业务是按距离输入位置的距离排序的。然而,每次搜索的距离都是不同的,而不是从数据库中提取的。所以我认为这可能是一个阵列的好地方 将业务从数据库中按顺序取出,按顺序(首先是最短距离)放入一个数组中,然后按正确的顺序显示数组以供人们查看。我的问题是,有没有更简单的方法?我将在下面发布一些我到目前为止所拥有的代码。不过我现在很难堪。谢谢你的帮助。此外,我似乎无法按顺序显示阵列?很明显,最底层的数组只基于找到的3个业务,而一次可能有几个。我只是不知道如何自动调整?下面的$distance1代码非常有效$距离1确实显示了所有渲染业务的正确距离。谢谢Php 从数组中排序数据库,php,mysql,arrays,Php,Mysql,Arrays,我创建了一个数据库,并在网上找到了一个代码,可以让你搜索一个邮政区号或城市,它会在数据库中查找距离搜索地点这么远的企业。我的问题是,在查询之后,我希望显示的业务是按距离输入位置的距离排序的。然而,每次搜索的距离都是不同的,而不是从数据库中提取的。所以我认为这可能是一个阵列的好地方 将业务从数据库中按顺序取出,按顺序(首先是最短距离)放入一个数组中,然后按正确的顺序显示数组以供人们查看。我的问题是,有没有更简单的方法?我将在下面发布一些我到目前为止所拥有的代码。不过我现在很难堪。谢谢你的帮助。此外
//// BASED ON ARRAY FROM ABOVE, PULL BUSINESSES WITHIN THE MILES SELECTED ////
$query1 = "SELECT * FROM `list` WHERE `zip` IN (".implode(',',$locations).")";
$result1 = mysql_query($query1) or die ("<br /><br />There's an error in the MySQL-query: ".mysql_error());
while ($row1 = mysql_fetch_assoc($result1)) {
$bus_name = $row1["bus_name"];
$bus_city = $row1["city"];
$bus_state = $row1["state"];
$bus_zip = $row1["zip"];
//// DISTANCE BETWEEN SEARCH START AND END ////
$distance1 = round($searched2_zip->getDistanceTo($bus_zip), 2);
//// ADD DISTANCE TO SQL QUERY ////
array_push($row1, $distance1);
//// MAKE ALL ROWS A GIANT ARRAY ////
$store[] = $row1;
}
//// MULTIDIMENSIONAL ARRAY --> SHOW 2 VALUES (DISTANCE AND BUS_NAME) ////
$shop = array( array($store[0][0],$store[0][bus_name]),
array($store[1][0],$store[1][bus_name]),
array($store[2][0],$store[2][bus_name])
);
sort($shop); //// SORT BY NUMERICAL DISTANCE ////
}
////基于上面的数组,在所选里程内拉取业务////
$query1=“从'list'中选择*,其中'zip'位于(“.infrade(',',$locations)。”);
$result1=mysql\u query($query1)或die(
mysql查询中出现错误:“.mysql\u error());
而($row1=mysql\u fetch\u assoc($result1)){
$bus_name=$row1[“bus_name”];
$bus_city=$row1[“city”];
$bus_state=$row1[“state”];
$bus_zip=$row1[“zip”];
////搜索开始和结束之间的距离////
$distance1=round($searched2\u-zip->getDistanceTo($bus\u-zip),2);
////向SQL查询添加距离////
阵列推送($row1,$distance1);
////使所有行成为一个巨大的数组////
$store[]=$row1;
}
////多维数组-->显示2个值(距离和总线名称)////
$shop=array(数组($store[0][0],$store[0][bus_name]),
数组($store[1][0],$store[1][bus_name]),
数组($store[2][0],$store[2][bus_name])
);
排序($shop);//按数字距离排序////
}
您需要usort
看看这个帖子
就你而言:
usort($shop, function($a, $b) {
return $a[0] > $b[0];
});
如果您的php版本>=5.3usort工作得很好。现在一切都好了。但是,它仍然从数组中选择要在每行上显示的每个字段。如何使用list函数仅显示数组中的两个字段?'//按数字距离排序(按“0”排序。按城市排序='BUS_NAME')///函数sortByOrder($a,$b){返回$a['0']-$b['0'];}usort($store,'sortByOrder');///按数字距离结束排序///echo“
”;foreach($v1存储){foreach($v2存储){echo“$v2\n”}echo“
”}是否要将$store限制为2个结果(可能最相关)使用数组_切片?否则我不明白你想干什么。把你想要达到的结果贴出来,也许吧。别担心,我想出来了。而循环是我所需要的$x=0;而($x)