cakephp2中如何根据时间显示数据?

How to display the data according to the time in cakephp2?

目前,我使用下面的示例脚本来获取以下数组数据列表。并按以下顺序显示。

$datas = $this->MyDataModel->getDataByArrayLists($listofids);

Array
(
    [data] => Array
        (
            [0] => Array
                (
                    [id] => 1
                    [my_name] => Joe
                    [my_home] => home1
                    [my_school] => school1)
            [1] => Array
                (
                    [id] => 2
                    [my_name] => Bob
                    [my_home] => home2
                    [my_school] => school2

我想做的是根据最后一次点击的时间来改变显示数据的顺序。我不想在数据库中这样做。时间保存在一个cookie数据中,格式如下,打算用它来对数据进行排序。例如,(id 1 是 Joe)和(id 2 是 Bob),如果您看到上面的数组数据,则首先显示 Joe,然后显示 Bob。但是正如您在以下数组中看到的那样,id 2 的 [time] 是最后一次单击的,Bob 应该在数据中的 0 索引中,而 Joe 应该在第一个索引中。问题是我不知道如何更改索引数据的位置并显示它。

 Array
      (
        [1] => Array
        (
            [id] => 1
            [time] => 2017-12-22 18:53:47
        )
        ,
        [2] => Array
        (
            [id] => 2
            [time] => 2017-12-22 19:56:05
        )

)

一些示例或提示会很棒!我很想听听你的消息!

不是优化的解决方案,您可以继续努力

    $a = array(
        'data' => array(
            array(
                'id' => 1,
                'name' => 'Joe',
                'my_home' => 'Home 1'
            ),
            array(
                'id' => 2,
                'name' => 'Bob',
                'my_home' => 'Home 2'
            ),
            array(
                'id' => 3,
                'name' => 'Alice',
                'my_home' => 'Home 3'
            )
        )
    );

    $b = array(
        array(
            'id' => 1,
            'time' => '2017-12-22 18:53:47'
        ),
        array(
            'id' => 2,
            'time' => '2017-12-22 19:53:47'
        )
    );

    usort($a['data'], function($el1, $el2) use($b) {
        $t1 = Hash::get(Hash::extract($b, "{n}[id=" . $el1['id'] . "]"), '0.time', 0);
        $t2 = Hash::get(Hash::extract($b, "{n}[id=" . $el2['id'] . "]"), '0.time', 0);
        return (is_string($t1) ? strtotime($t1) : 0) < (is_string($t2) ? strtotime($t2) : 0) ;
    });