2

在使用纬度和经度计算两点之间的距离后,我创建了一个如下所示的数组:

$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 是如何工作的......

4

2 回答 2

3

解决这个问题的一个简单方法是重组你的数组并使用 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);
于 2013-09-06T16:08:12.947 回答
1

这取决于您使用的排序情况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并且显然有更多更好的解决方案和答案可以解决您的问题。

于 2013-09-06T16:10:47.523 回答