在不使用usort函数的情况下,尝试按"end“对下面的数组进行排序,有简单的方法吗?
$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")
)我是输出的结果,通过一个前景循环,但希望限制在3个结果。
<?php foreach( array_slice($feature_event, 0, 3) as $event): ?>
...
<?php endforeach; ?> 小解释:我试图显示与事件相关的图像。每个事件都有特定的结束日期。结束日期过去后,在loop...but中显示下一个图像--我希望数组按结束日期排序。我知道usort函数会起作用,但我在编码方面并没有那么先进。是否有一个简单的方式来完成排序的“结束”,或者我需要做一个usort。如果需要,我还需要forloop吗?请原谅我的愚蠢问题。
更新
这个数组多排序解决方案
array_multisort(array_column($feature_event, 'end'), $feature_event);排序的方式,我需要它,但我想输出数据的基础上的当前日期.我似乎不能创建一个条件,正确工作.
在我的forloop中,我有以下条件:
<?php
date_default_timezone_set("America/Chicago");
$now = strtotime("now");
?>
<?php if($now <= $event["end"]) :?>
... code ...
<?php endif;?>但是它只是输出了两个关于我做错了什么的events....any想法。这个if在前面的循环中。
发布于 2016-07-25 03:12:43
由于end值是时间戳,所以只需将它们提取到数组中并对其排序,对原始数组进行排序:
PHP < 5.5.0
array_multisort(
array_map(function($v) { return $v['end']; }, $feature_event), $feature_event);PHP >= 5.5.0
array_multisort(array_column($feature_event, 'end'), $feature_event);或者使用SORT_DESC作为第三个参数,具体取决于您要排序的方式。
然后使用您的array_slice()获得第一个或最后一个3和循环。
https://stackoverflow.com/questions/38559072
复制相似问题