【问题标题】:PHP MySQL print monthly data using array() not workPHP MySQL使用array()打印每月数据不起作用
【发布时间】:2016-07-05 14:23:35
【问题描述】:

我有使用 php 和 mysql 显示每月数据的代码:

$sql = "SELECT title,timestamp,id FROM ".NEWS." ORDER BY timestamp DESC";

$data = DataAccess::Fetch($sql);

$nav = array();

foreach ( $data as $news ) {
    $month = date('F', $news['timestamp']);
    $nav[$month][$news['id']] = $news['title'];
}

现在在var_export($nav)我的结果是假的:

array (
  'July' => 
  array (
    277 => 'title1 for July 2016',
    276 => 'title2 for July 2016',
    275 => 'title3 for July 2016',
    273 => 'title4 for July 2016',
    272 => 'title5 for July 2016',
    274 => 'title1 for July 2015',
    264 => 'title2 for July 2015',
    261 => 'title3 for July 2015',
  ),
 'January' => 
   array (
    243 => 'title for January 2016',
    242 => 'title for January 2015',
  ), 
)

在结果中,我看到 2016 年 7 月的数据与 2015 年 7 月的数据或 2016 年 1 月的数据与 2015 年 1 月的合并数据。我需要将 2016 年 7 月的数据与 2015 年 7 月和 2016 年 1 月与 2015 年 1 月的数据分开。如何解决问题?

【问题讨论】:

  • @RiggsFolly:当然,如果我添加$year = date('Y', $news['timestamp']);$nav[$year][$month][$news['id']] = $news['title']; 这有效,但我需要每个月只打印数据。我的意思是:每月从数据库中打印数据。
  • 您的意思是您只想在报告中显示2016 - July 数据

标签: php mysql


【解决方案1】:

您仅使用 MONTH $month = date('F', $news['timestamp']); 作为 $nav 数组的键。如果您不想将年份数据混合在一起,您还需要使用年份。

我可能会建议这样的事情

$nav = array();

foreach ( $data as $news ) {
    $year = date('Y', $news['timestamp'] );
    $month = date('F', $news['timestamp']);
    $nav[$year][$month][$news['id']] = $news['title'];
}

或许

$nav = array();

foreach ( $data as $news ) {
    $year = date('Y', $news['timestamp'] );
    $month = date('F', $news['timestamp']);
    $nav[$year . '-' . $month][$news['id']] = $news['title'];
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多