无法根据php中的日期时间值转换数组

时间:2017-10-25 02:54:34

标签: php arrays

我有一个名为$ 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
)

1 个答案:

答案 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()来重置数组中的索引并保持其排序。

希望这有帮助!