从数组中排序数据库

时间:2014-01-30 08:12:09

标签: php mysql arrays

我创建了一个数据库并在网上找到了一个代码,可以让你搜索一个邮政编码或城市,它会查看数据库,找到搜索到的位置这么多英里内的商家。我的问题是,在查询之后,我希望显示的商家按输入位置的距离排序。但是,每次搜索的距离都不同,而不是您可以从数据库中提取的内容。所以我认为这可能是一个阵列的好地方?

按顺序从数据库中拉出业务,按顺序将它们放入数组(最短距离),然后以正确的顺序显示数组供人们查看。我的问题是,有更简单的方法吗?我将在下面发布一些代码到目前为止。我现在很难过。谢谢你的帮助。另外,我似乎无法按顺序显示数组?显然,最底层阵列仅基于3家企业发现......当时可能会有几家企业。我只是不知道如何自动调整?下面的$ distance1代码效果很好。 $ distance1确实显示所有呈现的业务的正确距离。谢谢!

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

 }

1 个答案:

答案 0 :(得分:0)

您需要usort

看看这篇文章 https://stackoverflow.com/a/2699159/2209160

在你的情况下:

usort($shop, function($a, $b) {
   return $a[0] > $b[0];
});

如果你的php版本是&gt; = 5.3