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) ;
});
目前,我使用下面的示例脚本来获取以下数组数据列表。并按以下顺序显示。
$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) ;
});