2

緯度と経度を使用して 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 に答える