2013-09-06 6 views
2

정리, I는 다음과 같다 배열을 만들었다 :PHP - array_multisort? 위도 및 경도를 사용하여 두 점 사이의 거리를 계산 한 후, 우편 번호 (ZIP 코드)

$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')); 

} 

메인 어레이는 비교를 위해 필요한 기업 포함 그 안에 실제 우편 번호가 적혀 있습니다. 우편 번호 => 거리. 이 문제를 해결하는 쉬운 방법

+2

당신이'$ enterprise [] = array ($ cpEnterprise [$ i] => distance ($ actualCpLat, $ actualCpLong, $ businessLat [$ i], $ businessLong [$ i], k ($ actualCpLat, $ actualCpLong, $ businessLat [$ i], $ businessLong [$ i], 'k')'대신에'$ cpEnterprise [$ i] 두 번째 방법은 [asort] (http://www.php.net/asort)를 사용하는 것입니다. – Orangepill

+0

@Orangepill 실제로 좋은 점은 없습니다. – Pobe

답변

3

은 배열을 재구성하고 따라 asort을 사용하는 것입니다 ...

나는 멀리에서 가장 가까운으로부터의 거리에 의해 그 내부 배열을 정렬 할 필요 작동는 array_multisort 방법 난 정말 이해가 안 돼요

$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); 
+0

감사합니다! 어떻게 asort ($ enterprises)가 우편 번호 대신 거리에 작용합니까? – Pobe

+2

asort는 배열 값에 따라 정렬합니다 ... 우편 번호 (배열의 키)로 정렬하려면 ksort를 사용하십시오. 그리고 당신이 그들을 필요로한다면 arsort는 당신의 친구입니다. – Orangepill

1

array_multisort을 (를) 사용하는 사용자의 종류에 따라 다릅니다. 이 array_multisort에 단지 예입니다

array(
    0 => 13, 
    2 => 10, 
    5 => 20 
) 

하고 도전적으로 질문에 대한 더 나은 솔루션과 답변이 있습니다

$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); 

결과 : 내 예를 들어 줄거야, 당신은 몇 가지 단서를 얻을 수 있습니다.