试图通过“结束”来排序下面的数组而不使用usort函数,是否有一种简单的方法可以这样做?简单的PHP数组按照子数组键排序
$feature_event = array(
array(
"title" => "Classic",
"date" => "October 28 - 30 2016",
"end" => strtotime("October 30, 2016")
),
array(
"title" => "Ski Weekend",
"date" => "February 5-8, 2017",
"end" => strtotime("February 8, 2017")
),
array(
"title" => "NBA Weekend",
"date" => "February 17-19, 2017",
"end" => strtotime("February 19, 2017")
),
array(
"title" => "Fiesta",
"date" => "May 26-28, 2017",
"end" => strtotime("May 28, 2017")
)
我通过foreach循环输出结果,但想限制为3个结果。
<?php foreach(array_slice($feature_event, 0, 3) as $event): ?>
...
<?php endforeach; ?>
小的解释: 我试图显示与事件相关的图像。每个事件都有一个特定的结束日期。一旦结束日期过去,显示循环中的下一个图像......但我希望数组按照结束日期排序。我明白一个usort函数可以做到这一点,但我并没有在编码方面取得进展。有没有简单的方法来完成“结束”排序或我需要做一个usort。如果需要使用usort,我仍然需要forloop? Plz原谅我愚蠢的问题。
UPDATE
这个数组multisort解决方案
array_multisort(array_column($feature_event, 'end'), $feature_event);
各种我需要它,但我想输出基于截止当前日期的数据的方式......我可以”不像是会创建一个条件即正常工作......
我的for循环中我有这样的条件:
<?php
date_default_timezone_set("America/Chicago");
$now = strtotime("now");
?>
<?php if($now <= $event["end"]) :?>
... code ...
<?php endif;?>
但它只输出2个事件....任何想法我做错了什么。这个如果在上面的foreachloop里面。
这是从一个数据库?为什么不从那里进行限制和排序,没有更多'array_slice'和'usort' – Ghost
这是一个小型网站的静态数据。这是一种基于不涉及使用usort的子数组的关键在PHP中排序和限制的方法吗?正如我所说,我宁愿一个简单的解决方案,但如果有更好的选择多一点进步,那么我不会反对它。 –
编辑答案,我误读了'strtotime()'部分。 – AbraCadaver