我已经生成了一系列日期。这是一个快速示例
Array
(
[2013] => Array
(
[Feb] => 2013
[Jan] => 2013
)
[2012] => Array
(
[Oct] => 2012
[Jun] => 2012
[May] => 2012
)
)
示例代码:
<?php
$posts = get_posts(array('numberposts' => -1, 'post_status' => 'publish', 'post_type' => 'post', ));
# $i=1;
print '<pre>';
foreach ($posts as $post) {
# $post_results[$post->ID][month] = get_the_time('m', $post->ID);
# $post_results[$post->ID][year] = get_the_time('Y', $post->ID);
$year = get_the_time('Y', $post -> ID);
$month = get_the_time('M', $post -> ID);
$post_results[$year][$month] = get_the_time('Y', $post -> ID);
# echo "$i. Post ID: " .$post->ID." - " .get_the_time('Y-m-d', $post->ID)."<br/>";
# $i++;
}
foreach ($post_results as $key => $value) {
echo "Month: " . $key . " Year: " . $value . "<br/>";
}
print_r($post_results);
print '</pre>';
?>
我想以与此网页http://www.smartpassiveincome.com/archives/
相同的格式列出所有日期我需要的是帮助让我的数组分离您所见的值。我自己可以做链接部分,我只需要将数据转化为易于使用的变量。
例如,我想说“对于每年,列出所有月份,然后输入<td>$year</td><td>$month</td>
然后继续前一年。
答案 0 :(得分:1)
这将为您提供所需的一切。只需将$currentDate
更改为您想要开始的任何日期的时间戳。
$currentDate = strtotime('January 1st, 2000');
$newestDate = strtotime(date('Y-m-01'));
$yearMonthArray = array();
while ($currentDate <= $newestDate) {
if (!array_key_exists($year = date('Y', $currentDate), $yearMonthArray)) {
$yearMonthArray[$year] = array();
}
$yearMonthArray[$year][] = date('M', $currentDate);
$currentDate = strtotime('next month', $currentDate);
}
var_dump($yearMonthArray);
编辑:这只是为您提供所有年/月组合。您应该能够将此示例与您的代码结合使用,以获得仅显示帖子数月的内容。
答案 1 :(得分:1)
这是我认为你需要的,他是实现以下目标的一种方式:
2013 |二月|扬
2012 |十月|君|可
<强>原始强>
$arrYears = array(2013=>array("Feb"=>2013, "Jan"=>2013), 2012=>array("Oct"=>2013, "Jun"=>2013, "May"=>2013));
foreach($arrYears as $strYear=>$arrMonths) {
echo $strYear;
// This is our logic for each year
foreach($arrMonths as $strMonth=>$strYear2) {
echo " | ".$strMonth;
}
echo "<br />";
}
编辑:将月份放入嵌套列表中
$arrYears = array(
2013=>array("Feb"=>2013, "Jan"=>2013),
2012=>array("Oct"=>2013, "Jun"=>2013, "May"=>2013)
);
echo "<ul>";
foreach($arrYears as $strYear=>$arrMonths) {
echo "<li>";
echo $strYear;
echo "<ul>";
foreach($arrMonths as $strMonth=>$strYear2) {
echo "<li><a href='#'>".$strMonth."</a></li>";
}
echo "</ul>";
echo "</li>";
}
echo "</ul>";
答案 2 :(得分:0)
我自己想出来了,这是我的新代码
$posts = get_posts(
array(
'numberposts' => -1,
'post_status' => 'publish',
'post_type' => 'post',
)
);
foreach ($posts as $post) {
$year = get_the_time('Y', $post->ID);
$month = get_the_time('M', $post->ID);
$post_results[$year][$month] = $month;
}
foreach ($post_results as $key => $value) {
echo "<b>" .$key."</b> ";
foreach ($value as $sub_key => $sub_value) {
echo $sub_key." ";
}
echo "<br/>";
}