php 索引数组添加字段,PHP编程技能:以指定字段为索引返回数组数据

很多景象下,我们从接触一个新的项目到开辟完成,再回过火来细心浏览一下本身写的代码,很多都是我们以前用谙练的代码。所以,在完成每个新项目标时 候,恰当的做些项目总结、代码总结,或许你会在今后的项目顶用得着,极有可能获合不测的收成,比如:代码优化,想到了更好、速度更快的实现办法等等。

的法度开辟者有时辰不在于代码量的几许,而是法度的代码简洁性、逻辑错杂但实现的便利性,这些才申明是否是一位好的法度员。我们不做日夜加班到深夜,拼代码量的法度员!

这篇博客和大师分享几个应用得PHP编程技能,有些技能是在看别人代码的时辰学来的,有些是本身总结的。

以特定字段为索引,返回数据库取的数据数组

举个例子轻易些:

假如你要统计指定站点从其它网站来的流量景象,并且做一个小后台,查看每个网站天天带来的流量景象。我们先建2张数据表:

表一、站点设备表(只统计这些网站的流量)

CREATE TABLE `site_config` (

`id` smallint(5) unsigned NOT NULL auto_increment COMMENT 主键,自增,

`sid` smallint(5) unsigned NOT NULL COMMENT 网站ID,

`site_url` varchar(128) NOT NULL COMMENT 网站URL地址,

`site_name` varchar(80) NOT NULL COMMENT 网站名称,

`add_time` timestamp NOT NULL default CURRENT_TIMESP COMMENT 添加时候,

PRIMARY KEY (`id`),

UNIQUE KEY `adid` (`sid`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT=站点设备表;

表二、站点流量统计表(来一个用户一笔记录)

CREATE TABLE `site_stat` (

`id` int(11) unsigned NOT NULL auto_increment COMMENT 主键,自增,

`sid` smallint(5) unsigned NOT NULL COMMENT 网站ID,

`ip_address` varchar(32) NOT NULL COMMENT 用户IP,

`add_time` timestamp NOT NULL default CURRENT_TIMESP COMMENT 添加时候,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=站点流量统计表 ;

因为site_config表读操纵大于写操纵,所以类型设置为MyISAM;而site_stat表写操纵大于读操纵,是以,我把表类型设置为InnoDB。(这些处所也是你在设计数据的时辰须要推敲的,速度进步不少)。

回到正题,假如表site_config里有如许几条数据:

数据格局为:id,sid,site_url,add_time

1,200,baidu.com,2013-06-30 14:20:00

2,201,google.com,2013-06-30 14:20:00

3,202,cnblogs.com,2013-06-30 14:20:00

4,203,codejia.net,2013-06-30 14:20:00

站点流量统计表site_stat里已经产生了一些数据,如下:

数据格局为:id,sid,ip_address,add_time

1,200,167.87.32.4,2013-06-30 14:40:00

2,200,192.168.11.56,2013-06-30 14:40:10

3,202,167.87.32.4,2013-06-30 14:40:10

4,202,192.168.11.56,2013-06-30 14:40:20

5,203,167.87.32.4,2013-06-30 14:40:20

6,202,10.10.10.10,2013-06-30 14:40:30

7,200,167.87.32.4,2013-06-30 14:40:31

你在后台须要做的报表格局为:日期,网站ID,网站URL,流量数 (没有流量的站点也要显现,流量显示为0)

你可能会想到按照日期,在表site_stat里按照sid group by之后再left join表site_config,这显然不是我将分享的办法。

用2条SQL来搞定,一条是取所有的站点;另一条是取指定日期下站点流量统计数。

SQL1取所有站点:

SELECT sid,site_url,site_name FROM site_config

SQL2取站点统计(假如为今天):

SELECT sid,COUNT(1) AS come_total FROM site_stat

WHERE add_time>=2013-06-30 00:00:00

AND add_time<=2013-06-30 23:59:59

GROUP BY sid

前面说了一大堆都是为后面做铺垫,分享一个PHP以传畴昔的字段为索引,返回二维数组的办法:

protected function getList(¥sql,¥filed = null){

¥res = mysql_query(¥sql,¥this->link_sc);

¥data = array();

if(¥filed === null){

while(¥row = mysql_fetch_assoc(¥res)){

¥data[] = ¥row;

}

}else{

while(¥row = mysql_fetch_assoc(¥res)){

¥data[¥row[¥filed]] = ¥row;

}

}

return ¥data;

}

把你的SQL传进入,并把须要索引的字段传进入就OK,前提是传进去的字段必必要在返回的字段里。

我们在取所有站点的时辰不须要传畴昔字段,但在取站点流量统计的时辰我们把,站点sid传畴昔,即如下:

¥sites = getList(¥sql1); //所有站点

¥data = getList(¥sql2,sid); //站点流量数据,以sid为索引返回二维数组

最后在显现报表的时辰,用foreach轮回¥sites,取流量的时辰到数组¥data里去取索引为sid的数据就OK了。

很是便利,并且很是轻易把握,我就经常这么干。

最后看下上表的统计成果报表:

格局为:日期,网站ID,网站URL,流量数

2013-06-30,200,baidu.com,3

2013-06-30,201,google.com,0

2013-06-30,202,cnblogs.com,3

2013-06-30,203,codejia.net,1

总结:貌似写这么多就申明那样一个小的技能哈,然则,可切切别小看这个技能,能节俭你很多时候。所以,大师在写代码的时辰多多总结,多多来博客园和大师交换、进修,编程程度必然会进步很快的!我们永远不要期待别人的拯救,只有自己才能升华自己。自己已准备好了多少容量,方能吸引对等的人与我们相遇,否则再美好的人出现、再动人的事情降临身边,我们也没有能量去理解与珍惜,终将擦肩而过。—— 姚谦《品味》

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值