Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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 在数组\u multisort()中,SORT\u ASC和SORT\u DESC之间没有任何区别_Php_Sorting - Fatal编程技术网

Php 在数组\u multisort()中,SORT\u ASC和SORT\u DESC之间没有任何区别

Php 在数组\u multisort()中,SORT\u ASC和SORT\u DESC之间没有任何区别,php,sorting,Php,Sorting,我的原始阵列如下所示: Array ( [0] => Array ( [validTo] => 2017-03-18T00:00:00+01:00 [value] => 1 ) [1] => Array ( [validTo] => 2017-06-28T00:00:00+02:00 [value] =&g

我的原始阵列如下所示:

Array
(
    [0] => Array
        (
            [validTo] => 2017-03-18T00:00:00+01:00
            [value] => 1
        )

    [1] => Array
        (
            [validTo] => 2017-06-28T00:00:00+02:00
            [value] => 1
        )

    [2] => Array
        (
            [validTo] => 2017-11-21T00:00:00+01:00
            [value] => 1
        )

    [3] => Array
        (
            [validTo] => 2017-12-24T00:00:00+01:00
            [value] => 1
        )

    [4] => Array
        (
            [validTo] => 2017-04-29T00:00:00+02:00
            [value] => 3
        )

    [5] => Array
        (
            [validTo] => 2017-11-17T00:00:00+01:00
            [value] => 3
        )

    [6] => Array
        (
            [validTo] => 2017-11-26T00:00:00+01:00
            [value] => 3
        )

)
我想按时间分类。最晚时间优先

我看到了这根线

所以我试着:

// sort arr after date
foreach ($arrs as $i => $arr) {
    $time[$i] = $arr[0];
}

array_multisort($time, SORT_ASC, $arrs);
但是我得到了这个输出:

Array
(
    [0] => Array
        (
            [validTo] => 2017-03-18T00:00:00+01:00
            [value] => 1
        )

    [1] => Array
        (
            [validTo] => 2017-04-29T00:00:00+02:00
            [value] => 3
        )

    [2] => Array
        (
            [validTo] => 2017-06-28T00:00:00+02:00
            [value] => 1
        )

    [3] => Array
        (
            [validTo] => 2017-11-17T00:00:00+01:00
            [value] => 3
        )

    [4] => Array
        (
            [validTo] => 2017-11-21T00:00:00+01:00
            [value] => 1
        )

    [5] => Array
        (
            [validTo] => 2017-11-26T00:00:00+01:00
            [value] => 3
        )

    [6] => Array
        (
            [validTo] => 2017-12-24T00:00:00+01:00
            [value] => 1
        )

)
这是错误的“方式”。所以我试过了

array_multisort($time, SORT_DESC, $arrs);

但我得到了相同的输出。为什么会这样?我做错了什么?

这比看起来要简单得多

rsort($arrs);
我会做好的

由于要排序的键是子数组中的第一个键,因此它们之间的比较应该正确,小于或大于,而不指定该键

$a = ['validTo' => '2017-03-18T00:00:00+01:00', 'value' => 1];
$b = ['validTo' => '2017-11-21T00:00:00+01:00', 'value' => 1];

assert($a < $b);
$a=['validTo'=>'2017-03-18T00:00:00+01:00','value'=>1];
$b=['validTo'=>'2017-11-21T00:00:00+01:00','value'=>1];
断言($a<$b);

它不像看上去那么复杂

rsort($arrs);
我会做好的

由于要排序的键是子数组中的第一个键,因此它们之间的比较应该正确,小于或大于,而不指定该键

$a = ['validTo' => '2017-03-18T00:00:00+01:00', 'value' => 1];
$b = ['validTo' => '2017-11-21T00:00:00+01:00', 'value' => 1];

assert($a < $b);
$a=['validTo'=>'2017-03-18T00:00:00+01:00','value'=>1];
$b=['validTo'=>'2017-11-21T00:00:00+01:00','value'=>1];
断言($a<$b);

看看你的foreach,看看数组键你是不是在进行微操作,这是一个打字错误$arr[0]应该反映你的数组,你不能只是复制代码而不理解你必须做什么change@nogad我的代码现在是正确的,我只是有一个打字错误。我的问题是关于SORT\u ASC和SORT\u desc告诉我这是对的:
print\r($time)
看看你的foreach,看看数组键你是不是在进行微操作,这是一个打字错误$arr[0]应该反映你的数组,你不能只是复制代码而不理解你需要做什么change@nogad我的代码现在是正确的,我只是有一个打字错误。我的问题是关于排序ASC和排序描述告诉我这是正确的:
print\r($time)
仅当要排序的键首先列出时,如
validTo
@AbraCadaver
validPoint
。我将在答案中包括这一点。仅当要排序的密钥首先列出时,如
validTo
@AbraCadaver
validPoint
。我会在回答中包括这一点。