PHP - array_multisort? Сортировка по почтовому индексу (почтовый индекс)
После вычисления расстояний между двумя точками, используя широту и долготу, я создал массив, который выглядит следующим образом:
$enterprises = array();
//Ex.: Array ( [0] => Array ( [A0A0A0] => 0 ) [1] => Array ( [A0A1A0] => 22.794344863539 )
for ($i=0; $i < count($cpEnterprise) ; $i++) {
$enterprises[] = array($cpEnterprise[$i] => distance($actualCpLat, $actualCpLong, $businessLat[$i], $businessLong[$i], 'k'));
}
Основной массив содержит предприятия, необходимые для сравнения с фактическими почтовыми индексами внутри него. ПОЧТОВЫЙ КОД => РАССТОЯНИЕ.
Мне нужно отсортировать эти внутренние массивы по расстоянию от ближайшего к самому дальнему, и я не очень понимаю, как работает array_multisort...
2 ответа
Решение
Простой способ справиться с этим - реструктурировать массив и использовать asort
$enterprises = array();
//Ex.: Array ( [0] => Array ( [A0A0A0] => 0 ) [1] => Array ( [A0A1A0] => 22.794344863539 )
for ($i=0; $i < count($cpEnterprise) ; $i++) {
$enterprises[$cpEnterprise[$i]] = distance($actualCpLat, $actualCpLong, $businessLat[$i], $businessLong[$i], 'k');
}
asort($enterprises);
Это зависит от вашей ситуации, чтобы использовать array_multisort
, Я приведу мой пример, вы можете получить некоторые подсказки:
$products_count = array(
2 => 10,
5 => 20,
0 => 13
)
$counts = array();
foreach($products_count as $k => $v)
{
$counts[$k] = $v;
}
array_multisort($counts, SORT_NUMERIC, SORT_ASC, $products_count);
Результат:
array(
0 => 13,
2 => 10,
5 => 20
)
Это всего лишь пример array_multisort
и вызывающе есть более лучшие решения и ответы на ваш вопрос.