試圖通過「結束」來排序下面的數組而不使用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