【发布时间】:2017-11-29 20:21:21
【问题描述】:
我原来的数组是这样的:
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
)
)
我想按时间排序。最晚时间优先。
我看到了这个帖子questions on sort array by time in php。
所以我尝试了:
// 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);
但我得到相同的输出。为什么会这样,我做错了什么?
【问题讨论】:
-
看看你的foreach,看看你在minipulating的数组键
-
抱歉,打错了
-
$arr[0] 应该反映你的数组,你不能只是复制代码而不明白你必须改变什么
-
@nogad 我的代码现在是正确的,我只是有一个错字。我的问题是关于 SORT_ASC 和 SORT_DESC
-
告诉我这是对的:
print_r($time)