Php 排序问题-按非db列排序

Php 排序问题-按非db列排序,php,mysql,sorting,Php,Mysql,Sorting,我有一个包含Zipcode、纬度和经度的数据库。我拥有的另一个数据库中有汽车的Zipcode位置。我有一个函数返回用户位置(从ip地址提取)和汽车位置(基于zipcode、纬度和经度)之间的距离。我想按离用户最近的顺序订购汽车。我不确定最好的方法 我可以想象一个orderby(distance ASC),但distance不在db中,它是基于每个用户获得的 语言:PHP,MYSQL框架:YII2如果此函数在MYSQL中(例如存储函数),则您可以使用此函数,例如,按用户距离(用户,距离)或类似方式

我有一个包含Zipcode、纬度和经度的数据库。我拥有的另一个数据库中有汽车的Zipcode位置。我有一个函数返回用户位置(从ip地址提取)和汽车位置(基于zipcode、纬度和经度)之间的距离。我想按离用户最近的顺序订购汽车。我不确定最好的方法

我可以想象一个orderby(distance ASC),但distance不在db中,它是基于每个用户获得的


语言:PHP,MYSQL框架:YII2

如果此函数在MYSQL中(例如存储函数),则您可以使用此函数,例如,按用户距离(用户,距离)或类似方式进行排序

如果函数在PHP代码(而不是MySQL)中,那么您需要在返回查询后对结果进行排序。PHP具有各种功能,可以帮助您完成以下任务:

您可能希望在此处找到一个用户定义的排序函数:

请添加一些代码以便更好地理解。我还不想粘贴代码,因为我仍在努力想出最好的方法。我曾想过在过滤器之后对查询进行排序,但距离不在db中。我在考虑某种类型的联接表,其中car.zip=$zipcoderadius['zipcode'],但我不确定是否要这样做$zipcoderadius-是距离检查函数的返回值,它有一个包含zipcodes及其距离的数组。在这种情况下很难提供帮助。该函数是用PHP编写的。如果距离不在db内,我将如何对结果进行排序?我不能只按zipcode排序,因为它们在较高zipcode中的距离可能更近。我想你是建议在查询结果之后,对结果进行usort,其中我使用zipcode和距离范围对数组进行排序,将其排序为最低距离,然后执行usort,将zipcode地址与distance/zipcode数组中zipcode的顺序进行比较。这正是我的建议。