【问题标题】:How to display the data according to the time in cakephp2?cakephp2如何根据时间显示数据?
【发布时间】:2017-12-25 01:58:20
【问题描述】:

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

$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 的 [时间],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
        )

)

一些示例或提示会很棒!我很想听听你的意见!

【问题讨论】:

    标签: cakephp-2.0


    【解决方案1】:

    不是优化的解决方案,您可以使用它

        $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) ;
        });
    

    【讨论】:

      猜你喜欢
      • 2015-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-10
      • 1970-01-01
      • 1970-01-01
      • 2018-10-18
      • 1970-01-01
      相关资源
      最近更新 更多