Php 如何按月份和年份排列阵列中的数据
我正在用PHPZend框架和SQLServer2008开发一个网站 我需要制作一个多维数组,以这种格式按年份和月份存储数据:Php 如何按月份和年份排列阵列中的数据,php,zend-framework,multidimensional-array,Php,Zend Framework,Multidimensional Array,我正在用PHPZend框架和SQLServer2008开发一个网站 我需要制作一个多维数组,以这种格式按年份和月份存储数据: Array( [2012] => Array( [11] => Array( // data ) [12] => Array( // data ) ) [2013] => Array( [01] => Array(
Array(
[2012] => Array(
[11] => Array(
// data
)
[12] => Array(
// data
)
)
[2013] => Array(
[01] => Array(
// data
)
[02] => Array(
// data
)
[03] => Array(
// data
)
[04] => Array(
// data
)
)
)
但我的结果数组中有重复项。这意味着我也将在2013年获得2012年的数据。
我的代码如下:
// Database functions to get data
function select_cldata($month,$year)
{
global $db;
$select = "select ClientId,ClientName,Email,Request,'Order Placed' as info from tbl_clrequest where MONTH(CreatedDate) = ".$month." and YEAR(CreatedDate) = ".$year;
return $db->fetchAll($select);
}
function select_itemsdata($month,$year)
{
global $db;
$select = "select ItemId,ItemName,Desc,price,'Items delivered' as info1 from tbl_items where MONTH(ItemDate) = ".$month." and YEAR(ItemDate) = ".$year;
return $db->fetchAll($select);
}
// PHP Code
$test = new dbase();
$months = "2012-11,2012-12,2013-01,2013-02,2013-03,2013-04";
$mon_num = explode(",",$months);
$res = array();
$result = array();
foreach($mon_num as $mn)
{
$mm = explode("-",$mn);
$year = $mm[0];
$month = $mm[1];
$cl_data = $test->select_cldata($month,$year);
$dl_data = $test->select_itemsdata($month,$year);
$res[$month] = array_merge($clients,$sr,$events,$ses,$docs,$event_change,$devents);
$result[$year] = $res;
}
echo "<pre>";
print_r($result);die;
//获取数据的数据库函数
功能选择\u cldata($month,$year)
{
全球$db;
$select=“选择客户ID、客户名称、电子邮件、请求、‘下单’作为tbl_clrequest中的信息,其中月(CreatedDate)=“$MONTH.”和年(CreatedDate)=“$YEAR;”;
返回$db->fetchAll($select);
}
函数选择项数据($month,$year)
{
全球$db;
$select=“从tbl_项目中选择项目ID、项目名称、描述、价格、“交付的项目”作为信息1,其中月(项目日期)=“$MONTH.”和年(项目日期)=“$YEAR;”;
返回$db->fetchAll($select);
}
//PHP代码
$test=新数据库();
$months=“2012-112012-122013-012013-022013-032013-04”;
$mon_num=爆炸(“,”,$months);
$res=array();
$result=array();
foreach($mon_num为$mn)
{
$mm=爆炸(“-”,$mn);
$year=$mm[0];
$month=$mm[1];
$cl\u data=$test->select\u cldata($month,$year);
$dl_data=$test->select_itemsdata($month,$year);
$res[$month]=array\u merge($clients、$sr、$events、$ses、$docs、$event\u change、$devents);
$result[$year]=$res;
}
回声“;
打印(结果);死亡
有人能帮我吗?下面是您的解决方案和我的工作示例
Array
(
[2012] => Array
(
[11] => Array
(
[0] => 12
[1] => 1211
[2] => 112122
[3] => 121111
[4] => 67676
[5] => 545454
[6] => 666666
)
[12] => Array
(
[0] => 12
[1] => 1211
[2] => 112122
[3] => 121111
[4] => 67676
[5] => 545454
[6] => 666666
)
)
[2013] => Array
(
[01] => Array
(
[0] => 12
[1] => 1211
[2] => 112122
[3] => 121111
[4] => 67676
[5] => 545454
[6] => 666666
)
[02] => Array
(
[0] => 12
[1] => 1211
[2] => 112122
[3] => 121111
[4] => 67676
[5] => 545454
[6] => 666666
)
[03] => Array
(
[0] => 12
[1] => 1211
[2] => 112122
[3] => 121111
[4] => 67676
[5] => 545454
[6] => 666666
)
[04] => Array
(
[0] => 12
[1] => 1211
[2] => 112122
[3] => 121111
[4] => 67676
[5] => 545454
[6] => 666666
)
)
)
我添加了一些要打印的虚拟数据
输出
希望这一定能解决您的问题。您确定
select\u cldata()
返回的数据正确吗?是的,我确定。只是在数组的过程中出错了。但是我找不到它是什么。从那里数组$clients,$sr,$events,$ses,$docs,$event\u change,$devents
创建。你能试试这个$result[$year][$month]=array\u merge($clients,…)代码>
Array
(
[2012] => Array
(
[11] => Array
(
[0] => 12
[1] => 1211
[2] => 112122
[3] => 121111
[4] => 67676
[5] => 545454
[6] => 666666
)
[12] => Array
(
[0] => 12
[1] => 1211
[2] => 112122
[3] => 121111
[4] => 67676
[5] => 545454
[6] => 666666
)
)
[2013] => Array
(
[01] => Array
(
[0] => 12
[1] => 1211
[2] => 112122
[3] => 121111
[4] => 67676
[5] => 545454
[6] => 666666
)
[02] => Array
(
[0] => 12
[1] => 1211
[2] => 112122
[3] => 121111
[4] => 67676
[5] => 545454
[6] => 666666
)
[03] => Array
(
[0] => 12
[1] => 1211
[2] => 112122
[3] => 121111
[4] => 67676
[5] => 545454
[6] => 666666
)
[04] => Array
(
[0] => 12
[1] => 1211
[2] => 112122
[3] => 121111
[4] => 67676
[5] => 545454
[6] => 666666
)
)
)