Php 从数组中排序数据库

Php 从数组中排序数据库,php,mysql,arrays,Php,Mysql,Arrays,我创建了一个数据库,并在网上找到了一个代码,可以让你搜索一个邮政区号或城市,它会在数据库中查找距离搜索地点这么远的企业。我的问题是,在查询之后,我希望显示的业务是按距离输入位置的距离排序的。然而,每次搜索的距离都是不同的,而不是从数据库中提取的。所以我认为这可能是一个阵列的好地方 将业务从数据库中按顺序取出,按顺序(首先是最短距离)放入一个数组中,然后按正确的顺序显示数组以供人们查看。我的问题是,有没有更简单的方法?我将在下面发布一些我到目前为止所拥有的代码。不过我现在很难堪。谢谢你的帮助。此外

我创建了一个数据库,并在网上找到了一个代码,可以让你搜索一个邮政区号或城市,它会在数据库中查找距离搜索地点这么远的企业。我的问题是,在查询之后,我希望显示的业务是按距离输入位置的距离排序的。然而,每次搜索的距离都是不同的,而不是从数据库中提取的。所以我认为这可能是一个阵列的好地方

将业务从数据库中按顺序取出,按顺序(首先是最短距离)放入一个数组中,然后按正确的顺序显示数组以供人们查看。我的问题是,有没有更简单的方法?我将在下面发布一些我到目前为止所拥有的代码。不过我现在很难堪。谢谢你的帮助。此外,我似乎无法按顺序显示阵列?很明显,最底层的数组只基于找到的3个业务,而一次可能有几个。我只是不知道如何自动调整?下面的$distance1代码非常有效$距离1确实显示了所有渲染业务的正确距离。谢谢

 //// 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.3

usort工作得很好。现在一切都好了。但是,它仍然从数组中选择要在每行上显示的每个字段。如何使用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)