У меня многомерный массив. Теперь мне нужно отсортировать этот массив в порядке одного значения.
Здесь 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%)
)
Мне нужно отсортировать этот массив в соответствии с PhoneNumber
пробую удачу с последних 4 часов. Как это сделать?
Используйте 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');
Для получения дополнительной информации ознакомьтесь с документами PHP по адресу http://php.net/manual/en/function.usort.php.
EDIT: обратите внимание, что при таком очень простом сравнении можно просто
return $a['PhoneNumber']-$b['PhoneNumber'];
Использование usort будет сортировать это.
function cmp($a, $b) {
return $a["PhoneNumber"] - $b["PhoneNumber"];
}
usort($arr, "cmp");
Для этого вы можете использовать функцию usort и передать ее функции сравнения. Например:
function cmp($a, $b)
{
if ($a["PhoneNumber"] == $a["PhoneNumber"]) {
return 0;
}
return ($a["PhoneNumber"] < $a["PhoneNumber"]) ? -1 : 1;
}
usort($yourArray, "cmp");