2014-12-06 35 views
0

我正在製作我的第一個PHP應用程序,並且我在最後的障礙中蠢蠢欲動。按循環內的函數對foreach進行排序

我循環我的結果,並需要在PHP中的foreach循環內對函數的結果進行排序。

如果有人對我如何做到這一點有深入的瞭解,非常感謝!

foreach($data as $d) { 
echo $d["StudioName"]; // This will output "This is a test!" 

echo distance($lat, $lng, $d['StudioLat'], $d['StudioLong']);} 

基本上我需要的是按「距離」功能結果排序。

$sqlSelect = "SELECT * FROM studios WHERE StudioLat BETWEEN $minlat AND $maxlat AND StudioLong BETWEEN $minlng AND $maxlng"; // Basic SQL SELECT Statment 

$data = $dataBase->getQuery($sqlSelect); // This will run the SQL statment and return and associative array. 
+1

你可以在數組中存儲'distance($ lat,$ lng,$ d ['StudioLat'],$ d ['StudioLong']);'在每個數組中對數組進行排序 – Bijan 2014-12-06 16:51:09

+0

您是否正在構建' $ data'數組之前呢?或從某個地方接收它?如果建立,顯示該代碼。 – AbraCadaver 2014-12-06 16:53:31

+0

我編輯了代碼以顯示$數據 – 2014-12-06 17:12:13

回答

0

排序使用usort and a callback數組:

usort($data, function($a, $b) use ($lat, $lng) { 
    $da = distance($lat, $lng, $a['StudioLat'], $a['StudioLong']); 
    $db = distance($lat, $lng, $b['StudioLat'], $b['StudioLong']); 
    return $da - $db; 
}); 

之後,你就可以通過數組和輸出的項目循環,就像你一樣。