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
@AbraCadavervalidPoint
。我将在答案中包括这一点。仅当要排序的密钥首先列出时,如validTo
@AbraCadavervalidPoint
。我会在回答中包括这一点。