2014-01-30 3 views
0

Я создал базу данных и нашел код в Интернете, который позволяет вам искать почтовый индекс или город, и он будет искать в базе данных, чтобы найти предприятия на столько миль от искомого местоположения. Моя проблема заключается в том, что после запроса я хочу, чтобы показанные предприятия были заказаны на расстоянии от введенного местоположения. Тем не менее, расстояние отличается от каждого поиска, а не то, что вы можете извлечь из базы данных. Поэтому я думаю, что это может быть хорошим местом для массива?Сортировка базы данных из массива

Извлеките предприятия из базы данных из строя, поместите их в массив по порядку (самое короткое расстояние), затем отобразите массив в правильном порядке, чтобы люди могли видеть. Мой вопрос: есть ли более простой способ? Я отправлю код ниже того, что у меня есть. Сейчас я довольно тупой. Спасибо за любую помощь. Кроме того, я не могу показать массив в порядке? И, очевидно, самый нижний массив основан только на трех найденных предприятиях .., когда их может быть несколько. Я просто не знаю, как настроить это автоматически? код $ 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 //// 

} 

ответ

0

Необходимо usort.

взглянуть на этот пост https://stackoverflow.com/a/2699159/2209160

в вашем случае:

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

если ваш PHP версии> = 5,3

+0

usort работал отлично. Все в порядке. Однако он по-прежнему выбирает каждое поле из массива для отображения в каждой строке. Как использовать функцию списка для отображения всего 2 полей в массиве? «//// СНП численными ХОДЬБЫ (Сортировка по '0'. Для сортировки по ГОРОД = 'BUS_NAME') //// \t \t \t функцию sortByOrder ($ а, $ б) { \t \t \t вернуть $ a ['0'] - $ b ['0']; \t \t \t} \t \t \t \t usort ($ магазин, 'sortByOrder'); \t \t \t //// КОНЕЦ СНП численными ХОДЬБЫ //// \t \t \t \t \t \t \t \t эхо "

"; \t \t \t \t \t \t \t \t Еогеасп ($ магазина в $ v1) { \t \t \t \t Еогеасп ($ v1 v2, как $) { \t \t \t \t эхо "$ v2 \ п"; \t \t \t \t} \t \t \t \t эхо "
"; \t \t \t \t} – Rmurp006

+0

Вы хотите ограничить $ store до 2 результатов (наиболее подходящим может быть) использовать array_slice? в противном случае я не понимаю, что вы пытаетесь сделать.опубликуйте результат, которого вы хотите достичь, возможно. –

+0

никогда не думал, что понял. в то время как цикл - это то, что мне нужно. $ x = 0; \t \t \t \t в то время как ($ х <$ num_of_bus) \t \t \t \t { \t \t \t \t эхо "". $ Магазин [$ х] [bus_name]. "В". $ Магазин [$ х] [город ]. "(". $ store [$ x] [0] "миль")
"; \t \t \t \t $ x ++; \t \t \t \t} – Rmurp006

Смежные вопросы