2014-11-06 2 views
0

다차원 배열이 있습니다. 이제이 배열을 하나의 값으로 정렬해야합니다.값을 사용하여 다차원 배열 정렬

다음은이 배열의 인 print_r의 :

Array 
(
    [2] => Array 
     (
      [NoticeType] => Invoice or Statement 
      [PhoneNumber] => 2222222222 
      [NoticeIdentifier] => Firm1 
      [NoticeDescription] => test 
      [AdditionalComments] => test1 
      [LineItemGHN] => Monthly Charges 
      [Amount] => 100 
      [StartDate] => 21/10/2014 
      [EndDate] => 
      [TaxGroup] => GP-1 (GP-1. Service Tax (12) + Edu Cess (0.24) + Sec & High Edu Cess (0.12) for a total of 12.36%) 

     ) 

    [3] => Array 
     (
      [NoticeType] => Notice 
      [PhoneNumber] => 3333333333 
      [NoticeIdentifier] => Firm1 
      [NoticeDescription] => test2 
      [AdditionalComments] => test2 
      [LineItemGHN] => Half Yearly Subscription 
      [Amount] => 200 
      [StartDate] => 21/10/2014 
      [EndDate] => 
      [TaxGroup] => GP-0 (No Taxes) 
     ) 

    [4] => Array 
     (
      [NoticeType] => Invoice or Statement 
      [PhoneNumber] => 2222222222 
      [NoticeIdentifier] => Firm1 
      [NoticeDescription] => test 
      [AdditionalComments] => test1 
      [LineItemGHN] => Discounts 
      [Amount] => 50 
      [StartDate] => 21/10/2014 
      [EndDate] => 
      [TaxGroup] => GP-1 (GP-1. Service Tax (12) + Edu Cess (0.24) + Sec & High Edu Cess (0.12) for a total of 12.36%) 
     ) 

    [5] => Array 
     (
      [NoticeType] => Invoice or Statement 
      [PhoneNumber] => 2222222222 
      [NoticeIdentifier] => Firm2 
      [NoticeDescription] => test 
      [AdditionalComments] => test1 
      [LineItemGHN] => Monthly Charges 
      [Amount] => 2500 
      [StartDate] => 21/10/2014 
      [EndDate] => 
      [TaxGroup] => GP-1 (GP-1. Service Tax (12) + Edu Cess (0.24) + Sec & High Edu Cess (0.12) for a total of 12.36%) 
     ) 

내가 마지막 4 시간에서 하드 내 행운을 시도 PhoneNumber 사자 아에 따라이 배열을 정렬 할 필요가있다. 어떻게 정렬합니까?

+0

가지 적어 코드는 –

+0

http://stackoverflow.com/questions/2699086/sort-multi-dimensional-array-by-value이 링크를 확인했습니다. – Piyush

+0

@suby 나는이 어레이를'$ var'에 넣었습니다. 그래서 이것은 내가 시도한 것이다. foreach ($ var as $ key => $ val) { \t \t $ PhoneNumber = $ val [ 'PhoneNumber']; \t \t \t $ NoticeIdentifier = $ val [ 'NoticeIdentifier']; \t \t \t $ StartDate = $ val [ 'StartDate']; \t \t \t $ newAr [$ NoticeDent] [$ StartDate] [$ PhoneNumber] [] = $ val; \t}' – Kanav

답변

0

usort를 사용하면 배열의 두 요소를 비교할 때 0, 0 또는 그보다 작은 값을 반환하는 함수를 호출합니다.

function myPhonenumberSort($a,$b){//$a and $b are two array elements that needs to be compared 
    if($a['PhoneNumber']==$b['PhoneNumber')return 0; //Return 0 because they are the same. 
    return ($a['PhoneNumber']<$b['PhoneNumber'])?-1:1; // A is smaller, so return -1, else return 1 (b is bigger) 
} 
usort($myArray,'myPhonenumberSort'); 

이 더 많은 정보 http://php.net/manual/en/function.usort.php

편집에서 PHP의 문서를 읽어 매우 단순 비교의 종류에 점에 유의, 단순히

return $a['PhoneNumber']-$b['PhoneNumber'];

0

이 작업을 수행하기 위해 할 수 있습니다 함수 usort을 사용하여 비교 함수를 전달할 수 있습니다. 예를 들면 다음과 같습니다.

function cmp($a, $b) 
{ 
    if ($a["PhoneNumber"] == $a["PhoneNumber"]) { 
     return 0; 
    } 
    return ($a["PhoneNumber"] < $a["PhoneNumber"]) ? -1 : 1; 
} 

usort($yourArray, "cmp"); 
0

use usort는 이것을 정렬합니다.

function cmp($a, $b) { 
     return $a["PhoneNumber"] - $b["PhoneNumber"]; 
} 
usort($arr, "cmp");