我有一个名为$ itemIds的数组,它包含以下数据。关键是items id,值是可以转换为可读日期的日期时间。我想要做的只是根据值(时间)对数组的顺序进行排序。我是php的新手,一些例子或提示会很棒!我很乐意听取您的意见。
Array
(
[10477] => 1508898726
[10549] => 1508898744
[10891] => 1508898752
)
如果我使用此代码,我会从print_r获取以下数据。
if (isset($itemIds)) {
$time = array();
foreach ($itemIds as $key => $val) {
print_r($key.'=>'.date('m/d/Y H:i:s', $val));
}
}
问题从这里开始。我想根据日期时间对$ itemsIds进行排序(asc& desc)。
10477 => 10/25/2017 11:32:06
10549 => 10/25/2017 11:32:24
10891 => 10/25/2017 11:32:32
我想对数据进行排序,然后使用array_keys($ shopIds)将其更改为以下数据
Array
(
[0] => 10477
[1] => 10549
[2] => 10891
)
答案 0 :(得分:1)
我认为更简单的方法是对数据进行排序,然后将其翻转,使键成为值。如果你查看你的数据,你最初是从我能看到的实际时间戳处理的。使用它们,不要将它们改为字符串。我这样说是因为你只是让自己无缘无故地做额外的工作,并引入了一层不需要的复杂性。相反,我会做以下事情:
$array = [
10477 => 1508898726,
10549 => 1508898744,
10891 => 1508898752,
];
arsort($array);
$sorted_array = array_values(array_flip($array));
这很容易阅读,不涉及额外的功能。您留下的结果是:
Array
(
[0] => 10477
[1] => 10549
[2] => 10891
)
一点解释:
我正在使用arsort()
或asort()
(基于您要排序的方向),以便根据数组中的值进行排序。
然后我在数组上使用array_flip()
来交换键和值。
最后我使用array_keys()
来重置数组中的索引并保持其排序。
希望这有帮助!