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 и вызывающе есть более лучшие решения и ответы на ваш вопрос.

Другие вопросы по тегам