Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用值对多维数组排序_Php_Arrays_Sorting - Fatal编程技术网

Php 使用值对多维数组排序

Php 使用值对多维数组排序,php,arrays,sorting,Php,Arrays,Sorting,我有一个多维数组。现在我需要按照一个值的顺序对这个数组进行排序 以下是此阵列的打印内容: Array ( [2] => Array ( [NoticeType] => Invoice or Statement [PhoneNumber] => 2222222222 [NoticeIdentifier] => Firm1 [NoticeDescriptio

我有一个多维数组。现在我需要按照一个值的顺序对这个数组进行排序

以下是此阵列的打印内容:

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小时开始,我一直在努力尝试我的运气。如何进行排序

使用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文档,网址为

编辑:注意,在这种非常简单的比较中,可以简单地


返回$a['PhoneNumber']-$b['PhoneNumber']

为此,您可以使用该函数并将其传递给比较函数。例如:

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

usort($yourArray, "cmp");

使用usort将对此进行排序

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

检查此链接。@suby我在$var中获取此数组。因此,这是我在$key=>$val{$PhoneNumber=$val['PhoneNumber'];$NoticeIdentifier=$val['NoticeIdentifier'];$StartDate=$val['StartDate'];$newAr[$NoticeIdentifier][$StartDate][$PhoneNumber]=$val;}