php排序条件两个,php – 在两个条件下排序数组

好的,所以我无法找到问题的解决方案.基本上,我想要完成的是从过去的一个月开始,总计过去12个月的注册数量.

首先,因为我无法保证每个月都有回报,所以我构建了一个数组并用我的查询结果填充它.我能够提取所需的所有数据,但是我无法按照您的意愿对其进行“排序”.

我希望能够以这种方式显示它,例如:

它目前是10月,所以月份将如下列出:

2014年11月,2014年12月,2015年1月,2015年2月,2015年3月,… 2015年10月.

使用这个数组

$months = array(

'1'=>array('TOTAL'=>0, 'YEAR'=>NULL),

'2'=>array('TOTAL'=>0, 'YEAR'=>NULL),

'3'=>array('TOTAL'=>0, 'YEAR'=>NULL),

'4'=>array('TOTAL'=>0, 'YEAR'=>NULL),

'5'=>array('TOTAL'=>0, 'YEAR'=>NULL),

'6'=>array('TOTAL'=>0, 'YEAR'=>NULL),

'7'=>array('TOTAL'=>0, 'YEAR'=>NULL),

'8'=>array('TOTAL'=>0, 'YEAR'=>NULL),

'9'=>array('TOTAL'=>0, 'YEAR'=>NULL),

'10'=>array('TOTAL'=>0, 'YEAR'=>NULL),

'11'=>array('TOTAL'=>0, 'YEAR'=>NULL),

'12'=>array('TOTAL'=>0, 'YEAR'=>NULL)

);

并用我得到的结果填充它:

key: 1 (January) total: 17 year: 2015

key: 2 (February) total: 20 year: 2015

key: 3 (March) total: 23 year: 2015

key: 4 (April) total: 29 year: 2015

key: 5 (May) total: 26 year: 2015

key: 6 (June) total: 26 year: 2015

key: 7 (July) total: 26 year: 2015

key: 8 (August) total: 24 year: 2015

key: 9 (September) total: 22 year: 2015

key: 10 (October) total: 24 year: 2015

key: 11 (November) total: 30 year: 2014

key: 12 (December) total: 42 year: 2014

这是查询/循环

$query = "SELECT MONTH(DATE_ADDED) as MONTH_NUMBER, MONTHNAME(DATE_ADDED) as MONTH_NAME, COUNT(*) as TOTAL_REGISTRATIONS, YEAR(DATE_ADDED) AS YEAR FROM MEMBERS WHERE DATE_ADDED >= (CURDATE() - INTERVAL (DAY(CURDATE()) - 1) DAY) - INTERVAL 11 MONTH GROUP BY MONTH(DATE_ADDED) ORDER BY DATE_ADDED ASC";

$result = mysql_query($query) or die(mysql_error());

while($row = mysql_fetch_assoc($result)){

$months[$row['MONTH_NUMBER']]['NAME'] = $row['MONTH_NAME'];

$months[$row['MONTH_NUMBER']]['TOTAL'] = $row['TOTAL_REGISTRATIONS'];

$months[$row['MONTH_NUMBER']]['YEAR'] = $row['YEAR'];

$months[$row['MONTH_NUMBER']]['MONTH_NUM'] = $row['MONTH_NUMBER'];

}

foreach($months as $key=>$data){

echo 'key: '.$key. ' ('.$data['NAME'].') total: '.$data['TOTAL'].' year: '.$data['YEAR'].'
';

}

exit;

编辑:到目前为止,我已经能够做到这一点:

key: 12 (December) total: 42 year: 2014

key: 11 (November) total: 30 year: 2014

key: 10 (October) total: 24 year: 2015

key: 9 (September) total: 22 year: 2015

key: 8 (August) total: 24 year: 2015

key: 7 (July) total: 26 year: 2015

key: 6 (June) total: 26 year: 2015

key: 5 (May) total: 26 year: 2015

key: 4 (April) total: 29 year: 2015

key: 3 (March) total: 23 year: 2015

key: 2 (February) total: 20 year: 2015

key: 1 (January) total: 17 year: 2015

使用此代码:

function sortArray(array $a, array $b) {

if($a['YEAR'] <= $b['YEAR'] && $a['MONTH_NUM'] < $b['MONTH_NUM']){

return 1;

}elseif($a['YEAR'] <= $b['YEAR'] && $a['MONTH_NUM'] > $b['MONTH_NUM']){

return -1;

}elseif($a['YEAR'] >= $b['YEAR'] && $a['MONTH_NUM'] > $b['MONTH_NUM']){

return -1;

}elseif($a['YEAR'] >= $b['YEAR'] && $a['MONTH_NUM'] < $b['MONTH_NUM']){

return 1;

} else {

return 0;

}

}

// Sort

uasort($months, 'sortArray');

编辑:您可以看到它按年份排序,但以错误的方式列出月份.

编辑:所需的输出

key: 11 (November) total: 00 year: 2014

key: 12 (December) total: 00 year: 2014

key: 1 (January) total: 00 year: 2015

key: 2 (February) total: 00 year: 2015

key: 3 (March) total: 00 year: 2015

key: 4 (April) total: 00 year: 2015

key: 5 (May) total: 00 year: 2015

key: 6 (June) total: 00 year: 2015

key: 7 (July) total: 00 year: 2015

key: 8 (August) total: 00 year: 2015

key: 9 (September) total: 00 year: 2015

key: 10 (October) total: 00 year: 2015

最后,我将在一个条形图中显示这些,显示去年的每月总数.

我不知道这是否是最好的方法,欢迎任何建议.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值