1
私は配列PHP - 私は期待した結果を取得し、ソートなインデックス
function array_sort($array, $on, $order=SORT_ASC){
$new_array = array();
$sortable_array = array();
if (count($array) > 0) {
foreach ($array as $k => $v) {
if (is_array($v)) {
foreach ($v as $k2 => $v2) {
if ($k2 == $on) {
$sortable_array[$k] = $v2;
}
}
} else {
$sortable_array[$k] = $v;
}
}
switch ($order) {
case SORT_ASC:
asort($sortable_array);
break;
case SORT_DESC:
arsort($sortable_array);
break;
}
foreach ($sortable_array as $k => $v) {
$new_array[$k] = $array[$k];
}
}
return $new_array;
}
$prevnext = array_sort($prevnext, 'distance-between', SORT_ASC);
私はソートされた配列($のPREVNEXTを)var_dump();
var_dump($prevnext[0]);
、それは私が欲しいものを私に与えるのではなく、むしろそれが分類される前のデータを与える。
私はソートを誤解しましたか?キーの特定の値に基づいて配列を並べ替える方法はありますか?だから私が$prevnext[0]
を使うと、私は並べ替えられたデータを取得します。どんな助けもありがとう。
var_dump($prevnext);
は距離間のキーを使用してソートされ、以下の配列、与え:
array(11) { [10]=> array(7) { [0]=> string(3) "284" ["c_service_id"]=> string(3) "284" [1]=> string(14) "McGill Buckley" ["service_name"]=> string(14) "McGill Buckley" [2]=> string(7) "K2B 6V2" ["service_zip"]=> string(7) "K2B 6V2" ["distance-between"]=> float(9.24) } [0]=> array(7) { [0]=> string(4) "1319" ["c_service_id"]=> string(4) "1319" [1]=> string(38) "MDS MacFarlane Data & Mailing Services" ["service_name"]=> string(38) "MDS MacFarlane Data & Mailing Services" [2]=> string(7) "K1B 3V9" ["service_zip"]=> string(7) "K1B 3V9" ["distance-between"]=> float(11.66) } [6]=> array(7) { [0]=> string(4) "1270" ["c_service_id"]=> string(4) "1270" [1]=> string(38) "MDS MacFarlane Data & Mailing Services" ["service_name"]=> string(38) "MDS MacFarlane Data & Mailing Services" [2]=> string(7) "K1B 3V9" ["service_zip"]=> string(7) "K1B 3V9" ["distance-between"]=> float(11.66) } [7]=> array(7) { [0]=> string(4) "1268" ["c_service_id"]=> string(4) "1268" [1]=> string(31) "Evoke Direct Response Solutions" ["service_name"]=> string(31) "Evoke Direct Response Solutions" [2]=> string(7) "K2M 1X5" ["service_zip"]=> string(7) "K2M 1X5" ["distance-between"]=> float(13.48) } [3]=> array(7) { [0]=> string(4) "1293" ["c_service_id"]=> string(4) "1293" [1]=> string(24) "Creative Signs & Designs" ["service_name"]=> string(24) "Creative Signs & Designs" [2]=> string(7) "K1Z 7S8" ["service_zip"]=> string(7) "K1Z 7S8" ["distance-between"]=> float(27.43) } [9]=> array(7) { [0]=> string(3) "289" ["c_service_id"]=> string(3) "289" [1]=> string(8) "seoplus+" ["service_name"]=> string(8) "seoplus+" [2]=> string(7) "K2B 1A5" ["service_zip"]=> string(7) "K2B 1A5" ["distance-between"]=> float(32.32) } [5]=> array(7) { [0]=> string(4) "1275" ["c_service_id"]=> string(4) "1275" [1]=> string(35) "Innovacom Marketing & Communication" ["service_name"]=> string(35) "Innovacom Marketing & Communication" [2]=> string(7) "K1M 1L5" ["service_zip"]=> string(7) "K1M 1L5" ["distance-between"]=> float(43.62) } [8]=> array(7) { [0]=> string(4) "1267" ["c_service_id"]=> string(4) "1267" [1]=> string(27) "Rideau Mailing Services Inc" ["service_name"]=> string(27) "Rideau Mailing Services Inc" [2]=> string(7) "K2E 7K1" ["service_zip"]=> string(7) "K2E 7K1" ["distance-between"]=> float(45.74) } [2]=> array(7) { [0]=> string(4) "1294" ["c_service_id"]=> string(4) "1294" [1]=> string(21) "Agent Signs & Designs" ["service_name"]=> string(21) "Agent Signs & Designs" [2]=> string(7) "K1Y 0T8" ["service_zip"]=> string(7) "K1Y 0T8" ["distance-between"]=> float(50.11) } [1]=> array(7) { [0]=> string(4) "1297" ["c_service_id"]=> string(4) "1297" [1]=> string(21) "Golden Triangle Signs" ["service_name"]=> string(21) "Golden Triangle Signs" [2]=> string(7) "K0A 1B0" ["service_zip"]=> string(7) "K0A 1B0" ["distance-between"]=> float(57.39) } [4]=> array(7) { [0]=> string(4) "1280" ["c_service_id"]=> string(4) "1280" [1]=> string(32) "Aditek Design Printing And Signs" ["service_name"]=> string(32) "Aditek Design Printing And Signs" [2]=> string(7) "K1G 3W3" ["service_zip"]=> string(7) "K1G 3W3" ["distance-between"]=> float(64.13) } }
を私は$prevnext[0]
を使用する場合、それは上記のように私に同じ結果を与えるものではありません。私が取得:
array(7) { [0]=> string(4) "1319" ["c_service_id"]=> string(4) "1319" [1]=> string(38) "MDS MacFarlane Data & Mailing Services" ["service_name"]=> string(38) "MDS MacFarlane Data & Mailing Services" [2]=> string(7) "K1B 3V9" ["service_zip"]=> string(7) "K1B 3V9" ["distance-between"]=> float(11.66) }
:
array(7) { [0]=> string(3) "284" ["c_service_id"]=> string(3) "284" [1]=> string(14) "McGill Buckley" ["service_name"]=> string(14) "McGill Buckley" [2]=> string(7) "K2B 6V2" ["service_zip"]=> string(7) "K2B 6V2" ["distance-between"]=> float(9.24) }
が最小距離との間を有するように上記アレイは場合var_dump($prevnext[0]);
最初に表示されるべきです。
配列のインデックスをソートするために、以下に使用しますか? http://php.net/manual/en/array.sorting.phpを確認してください – apokryfos