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
最后,我将在一个条形图中显示这些,显示去年的每月总数.
我不知道这是否是最好的方法,欢迎任何建议.
php排序条件两个,php – 在两个条件下排序数组相关推荐
- 两万字搞定《数据结构》 八大排序 必读(建议收藏)
前言:本章将介绍常见八大排序包括如下直接插入排序.希尔排序.选择排序.堆排序.冒泡排序.快排.归并排序以及计数排序(基数排序和桶排序面试基本不涉及,本文忽略了,有兴趣的读者可以自行补充),本章内容是重 ...
- 两平面平行但不重合的条件是_____「初一数学」平行线的判定与性质的综合应用...
平行线的判定和性质的知识是初中几何的基础内容,这部分知识掌握的好坏关乎整个初中几何知识的成败,所以同学们一定要打好这一基础关,为后续的学习铺平康庄大道. ☞平行线的判定,初一常用的有六种方法:①定义法 ...
- 已有a,b两个链表,每个链表中的结点包括学号、成绩。要求把两个链表合并,按学号 升序排序
/*已有a,b两个链表,每个链表中的结点包括学号.成绩.要求把两个链表合并,按学号 升序排序*/#include <stdio.h> #include <stdlib.h> t ...
- 两化融合贯标申报条件
一.什么是两化融合贯标 在信息技术不断发展的环境下,企业围绕其战略目标,将信息化作为企业的内生发展要素,夯实工业化基础,推进数据.技术.业务流程.组织结构的互动创新和持续优化,充分挖掘资源配置潜力,不 ...
- 第四周作业——统计/etc/init.d/functions文件中每个单词的出现次数,并排序(用grep和sed两种方法分别实现)
统计/etc/init.d/functions文件中每个单词的出现次数,并排序(用grep和sed两种方法分别实现) 方法一:grep实现 grep -o "\<[[:alpha:]] ...
- Unity两个物体发生碰撞的条件
好吧,网上好多资料显示发生碰撞条件如下: 两个对象都有Collider组件且至少一个有Rigidbody组件 其中至少一个物体(必须运动的)必须带有碰撞器(collider)+刚体(Rigidbody ...
- 两化融合贯标申报条件-制造
两化融合贯标申报条件又是什么呢? (一)申报"互联网+制造"类项目的条件: 1.项目单位为在深圳注册的法人企业 2.项目单位属信息化应用企业: 3.项目单位属制造业企业,或属重点行 ...
- 汇编语言#编写两个子程序,分别实现:1)使用选择法排序,按成绩从高到低的进行排序;2)分别统计学生某门课程成绩中各分数段的成绩的人数,并输出
汇编语言#编写两个子程序,分别实现:1)使用选择法排序,按成绩从高到低的进行排序:2)分别统计学生某门课程成绩中各分数段的成绩的人数,并输出 选择排序(Selection sort)是一种简单直观的排 ...
- pandas中根据两列 或 多列进行条件对比,生成新列【三种方法】
使用目的: 两列数量对比,收货比期望多,就是标记数量满足,否则就数量不满足 如果数量满足.日期满足,那么总体就标记满足,有一个不满足就总体标记不满足 第一种: .loc赋值 # 这里是先创建一个空列, ...
- java 两个list排序_java实现两个不同list对象合并后并排序
工作上遇到一个要求两个不同list对象合并后并排序 1.问题描述 从数据库中查询两张表的当天数据,并对这两张表的数据,进行合并,然后根据时间排序. 2.思路 从数据库中查询到的数据放到各自list中, ...
最新文章
- 《从问题到程序:用Python学编程和计算》——第3章 基本编程技术 3.1 循环程序设计...
- EMIF的两个接口EMIFA和EMIFB分析与比较
- Rails 定时任务——whenever实现周期性任务
- SPOJ 3267: DQUERY 树状数组,离线算法
- CS144 lab2 笔记
- 给地球上的22.8万种植物建立图像索引
- 算法总结之 在单链表中删除指定值的节点
- 计算机科学与技术专业分多少学科,计算机科学与技术专业,电子科学与技术有什么分别?...
- sqlisnull mysql_SQL ISNULL()、NVL()、IFNULL() 和 COALESCE() 函数
- WPF-005:关于使用PageFunction导航中KeepAlive的使用
- python画科赫雪花
- SWT中嵌入Swing的JTextFeild却不能编辑
- Haskell生成数字的LED字符形式
- keras 中文文档学习一
- python(1)汇率换算
- 大数据BI可视化应用介绍
- 「大学必读」计算机专业学生一定要学好哪些课程?
- 软件加入使用时间_【安卓】换了这么多影视软件,还是这个老牌站点最靠谱
- 【过程挖掘算法4】Alpha Miner及其系列算法
- 大一新生必看,自学必看,里昂详解数据结构之线性表
热门文章
- xul中的快捷键及命令响应
- Python 命令行非阻塞输入
- 如何让Log4net日志文件按每月归成一个文件夹,StaticLogFileName参数的用法
- MAGENTO与性能优化
- tomcat异常[0]--java.lang.ClassNotFoundException: org.apache.taglibs.standard.tlv.JstlCoreTLV
- WebAPI Get
- laravel5集成支付宝alipay扫码支付流程(Laravel 支付解决方案)
- 【报告分享】2022中国女性内衣行业研究报告.pdf(附下载链接)
- 【重磅分享】从零到一搭建推荐系统指南白皮书.pdf(附48页下载链接)
- 自然语言处理之TF-IDF