- 浏览: 242678 次
- 性别:
- 来自: 大连
最新评论
-
di1984HIT:
不错。不错~
JIMI、JAI和ImageIO的一些感想 -
houyi521:
...
给OSGi加入数字签名及认证特性的思考 -
dsjt:
map是映射到直接内存,回收比较复杂。用堆内存缓存:
Byte ...
慎用 MappedByteBuffer! -
faint2010:
PHP这个基础本身是非持久的,你却硬要做持久层,无异于霸王硬上 ...
用PHP做ORM效率那是相当的低啊! -
wuhoufeng:
orm带来开发上的方便 但是增加性能优化上难度 所以要配合缓存 ...
用PHP做ORM效率那是相当的低啊!
也研究了一段时间的PHP,使用过了一堆libraries,之后发现:原来PHP的最佳实践就是“数组编程”啊!
从以下几个角度来看:
1. 基本语法(foreach等、array函数库):对于数组的操作是最简便的,而且还支持literal样式的数组(类似于Java的Map),不用耗费多少时间就可以掌握。
2. 核心引擎(Zend Engine):面向对象的编程开发量比较繁琐,没有Java那么方便。更重要的是,PHP引擎处理对象的效率比较低。
3. 数据库访问(PHP原生):返回出来数组时效率最高,而且还最简单。
4. 模板引擎(Smarty等):使用数组时,对模板制作最方便(直接使用“.”就可以了)。
个人感觉,以后要做PHP项目时,首推的就是面向数组的编程,既快速又高效....
评论
15 楼
showerxpII
2008-09-08
class TableManager { private $tableName,$fields,$conn; public function __construct($con){ $this->fields = array(); $this->conn=$con; } public function __destruct(){ } public function getConn(){ return $this->conn; } public function getTableName(){ return ($this->tableName); } public function setTableName($value){ $this->tableName=$value; } public function getFields(){ return ($this->fields); } public function setFields($value){ $this->fields=$value; } //添加新的数据库记录 public function saveNew() { //一个空的纪录集合 $rs=$this->conn->Execute("SELECT * FROM ".$this->tableName); $insertSQL = $this->conn->GetInsertSQL($rs, $this->fields); $this->conn->Execute($insertSQL); } //修改数据库记录 public function update($fieldName,$fieldValue) { $rs=$this->conn->Execute("SELECT * FROM ".$this->tableName." where ".$fieldName."=".$fieldValue); $updateSQL = $this->conn->GetUpdateSQL($rs, $this->fields); $this->conn->Execute($updateSQL); # 更新资料库中的记录 } public function updateRecords($sqlWhere){ $rs=$this->conn->Execute("SELECT * FROM ".$this->tableName." where ".$sqlWhere); $updateSQL = $this->conn->GetUpdateSQL($rs, $this->fields); $this->conn->Execute($updateSQL); # 更新资料库中的记录 } public function delete(){} } class PicTableManager extends TableManager { private $uploadFiles;//数组,保存图片路径字段. //数组结构:$uploadFiles["uploadFieldName"]=uploadFileObj; //eg,这里的pic是数据库中的字段名称: // $objFile=new UploadFiler($_FILES['pic'],_FileDir); // $uploadFiles['pic']=$objFile; public function __construct($con){ parent::__construct($con); $this->uploadFiles=array(); } public function __destruct(){} public function setUploadFiles($uploadFilesV){ $this->uploadFiles=$uploadFilesV; } public function getUploadFilesV(){ return $this->uploadFilesV; } //上传图片方法 private function uploadFiles() { foreach ($this->uploadFiles as $uploadObj) { $uploadObj->uploadFile(); } } //删除上传的图片,修改过的图片 public function delUploadedFile($fieldName,$fieldValue) { $conn=$this->getConn(); $sqlString="SELECT * FROM ".$this->getTableName()." where ".$fieldName."=".$fieldValue; $rs=$conn->Execute($sqlString); foreach ($this->uploadFiles as $uploadFieldName=>$uploadFileObj) { if (file_exists(_FileDir.$rs->fields[$uploadFieldName])) { unlink(_FileDir.$rs->fields[$uploadFieldName]);//删除文件 } else continue; } } //覆写保存新纪录的方法 public function saveNew() { $this->uploadFiles(); $tempFields=$this->getFields(); //生成用于保存的fields数组 foreach ($this->uploadFiles as $uploadFieldName=>$uploadFileObj){ $tempUploadfile=$uploadFileObj->getUploadFile(); $tempFields[$uploadFieldName]=$tempUploadfile["name"]; // } $this->setFields($tempFields); parent::saveNew(); } //覆写修改纪录的方法 public function update($fieldName,$fieldValue) { $this->delUploadedFile($fieldName,$fieldValue);//删除对应纪录的有关修改过的老图片 $this->uploadFiles(); $tempFields=$this->getFields(); foreach ($this->uploadFiles as $uploadFileTableName=>$uploadFileObj){ if (!$uploadFileObj->getUploadError()) { $fileTemp=$uploadFileObj->getUploadFile(); $tempFields[$uploadFileTableName]=$fileTemp["name"]; } else echo $uploadFileObj["error"]; } $this->setFields($tempFields); parent::update($fieldName,$fieldValue); } public function delete($id) { } }
对我来说,很多情况下已经够用了。
14 楼
yipsilon
2008-09-04
xombat 写道
基于数组编程:),以前隐约有过这种思考,今天看到你的文章产生了共鸣了!
确实我试过mysqli_result的三个函数:
fetch_assoc()
fetch_array()
fetch_row()
assoc()居然占用内存最少,谁速度最快被我忘了..assoc()返回的可是map啊。
确实我试过mysqli_result的三个函数:
fetch_assoc()
fetch_array()
fetch_row()
assoc()居然占用内存最少,谁速度最快被我忘了..assoc()返回的可是map啊。
我估计最快的应该是 fetch_row(),因为返回数组的key就是顺序数字。
主要是呀 fetch_array() 生成的数据是 fetch_assoc() + fetch_row() 合并而成的,所以效率不怎么样,不过它是为简化开发做的。
13 楼
xombat
2008-09-02
基于数组编程:),以前隐约有过这种思考,今天看到你的文章产生了共鸣了!
确实我试过mysqli_result的三个函数:
fetch_assoc()
fetch_array()
fetch_row()
assoc()居然占用内存最少,谁速度最快被我忘了..assoc()返回的可是map啊。
确实我试过mysqli_result的三个函数:
fetch_assoc()
fetch_array()
fetch_row()
assoc()居然占用内存最少,谁速度最快被我忘了..assoc()返回的可是map啊。
12 楼
七月十五
2008-08-09
ctrlming 写道
PHP给我的感觉就是 小巧灵活
此豹之一斑耳
11 楼
七月十五
2008-08-09
任何语言就语法层面来说,各有千秋
编程,光掌握语法是不行的
编程,光掌握语法是不行的
10 楼
ctrlming
2008-03-07
PHP给我的感觉就是 小巧灵活
9 楼
Jackphone
2007-12-25
zwws 写道
一直习惯不了.NET 总觉得MS的东西都好变态.
可是你大多数时间是在使用MS的东西吧
8 楼
zwws
2007-12-23
PHP 的数组很灵活 性能也不错
一直习惯不了.NET 总觉得MS的东西都好变态.
一直习惯不了.NET 总觉得MS的东西都好变态.
7 楼
yipsilon
2007-12-21
计算机语言的“面向”和“基于”是从英文中的“Oriented”和“Based”翻译来的。而这两个词可以有多种翻译,作为程序员,不要在这种无谓的地方钻牛角尖,最好把它用在程序开发上,说不定还会给自己带来很大好处。:)
6 楼
diogin
2007-12-21
什么是“面向”对象?为什么是“面向”?什么又是“基于”对象?这些名词很傻。依我看,不如统一叫作“对象化编程”,与“结构化编程”相对应。
5 楼
Jackphone
2007-12-21
不错,我也有同感
总觉得PHP没有真正的做到面向对象
总觉得PHP没有真正的做到面向对象
4 楼
115300111
2007-12-12
太神奇了!
数组虽好 可不能面对喔~
数组虽好 可不能面对喔~
3 楼
yipsilon
2007-11-27
算不上新词啦。
2 楼
diogin
2007-11-26
呵呵,“面向数组编程”,你得到了精髓 :p
1 楼
flynetcn
2007-11-26
面向数组的编程?
楼主发明的新词?
php的数组是一大特色,它实际上是有序图。
楼主发明的新词?
php的数组是一大特色,它实际上是有序图。
发表评论
-
在64位Ubuntu下安装Flash Media Server 3.5
2010-06-10 08:43 2247众所周知,Flash Media Server 是32位的程序 ... -
安装 ESXi 4 ?请先弄个带缓存的SCSI卡吧。
2010-06-01 17:45 1242最近为安装Oracle买了一个测试服务器,主板内置SCSI芯片 ... -
iPad的宣传广告真是搞笑啊!!!
2010-01-29 00:34 1849不知道他们的中国设计师是怎么想的,QQ这种大部分时间是后台运行 ... -
新版JRE内置新的LAF:Nimbus,太漂亮了!
2010-01-26 18:31 3179从6u10开始内置到JRE中了,可以在UIManager中通过 ... -
Michael Widenius 为什么要拯救MySQL?
2010-01-21 11:22 1793最近,呼吁中国人民签名以拯救MySQL的新闻挺多啊 ... -
PHP会倒掉吗?
2009-11-24 12:39 4901最近有不少文章讨论PHP如何如何不好,如何如何不适应企业应用, ... -
"脑子有Bing" 不知道是夸赞还是贬低...
2009-08-04 00:45 1221个人感觉微软有时候很搞笑,经常搞出比较可爱的广告啊、产品名字啊 ... -
iPhone Development Program 好像不支持国内注册了
2009-07-18 15:17 2622这几天研究iDP的注册流程,申请了好多Apple ID都无法登 ... -
谷歌被地产商山寨了~~
2009-06-29 15:18 913今天出去吃饭,突然看到“谷歌”字样,还以为Google到大连来 ... -
看看我们数据处理部门的杰作吧!
2009-02-22 01:03 1283这套系统叫做 DMP,全称 Data Management P ... -
慎用 MappedByteBuffer!
2008-12-21 03:32 21481<script type="text/ja ... -
传说中的Java动态注释?
2008-10-18 02:01 1696动态注释是一个有用的功能。它可以使用多行的字符串来指定在行中测 ... -
要不我给你猪
2008-10-16 23:31 969男赶集卖猪,天黑遇雨,二十头猪未卖成,到一农家借宿。 少 ... -
没事做了个3D模型,纯Flash的。
2008-10-16 23:08 1354wsad 是前后左右行走,↑↓←→ 是视角前后左右移动,带碰撞 ... -
Godaddy 网站挂了....
2008-10-14 02:41 981本来想去管理一下服务器,结果没想到这么大的网站也挂了,还挂了这 ... -
Linkin Park演唱会取消了...
2008-10-08 03:13 1050因小C的背伤取消了,两个字:不爽! 听不到现场原唱,看来只 ... -
JIMI、JAI和ImageIO的一些感想
2008-09-05 03:52 7616最近研究个项目,涉及到多页TIFF分页保存问题。于是就研究呀研 ... -
使用iPhone发文章测试
2008-03-04 23:39 1022本文使用iPhone发表! 使用了iPhone也有一段时间 ... -
已将手机升级到砖头级!
2008-01-31 19:50 1165今儿备用电池终于到了,谢天谢地。此电池电量是2200毫安时,配 ... -
成功滴将iPhone升级到1.1.3版本!
2008-01-26 19:47 1354升级用了10分钟左右,在 Mac OSX 10.5 上搞的,汉 ...
相关推荐
该PPT介绍PHP编程基础知识中数组的内容,帮助有需要的朋友了解如何使用数组以及常用函数等知识。
php判断一个数组是几维数组,一维二维多维一一判断
使用php数组分页实现方法,php数组操作,PHP分页
PHP的扩展, 可以跟PHP的数组,因为PHP的数组是使用哈希表的, 所以内存使用比较大, 所以我用红黑树来写了一个dict的结构, 内存使用比PHP的数组少一半以上, 查询速度基本上跟PHP的数组相当, 不过插入速度稍微慢PHP的...
php 多维数组排序,应用php的多维数组排序函数
array_change_key_case -- 返回字符串键名全为小写或大写的数组 array_chunk -- 将一个数组分割成多个 array_combine -- 创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值 array_count_values -- ...
PHP实现一维数组的组合算法,欢迎下载和评论。
php 笛卡尔积二维数组矩阵算法 生成多个组合 php 笛卡尔积二维数组矩阵算法 生成多个组合 php 笛卡尔积二维数组矩阵算法 生成多个组合 php 笛卡尔积二维数组矩阵算法 生成多个组合 php 笛卡尔积二维数组矩阵...
php数组课件
php数组无限制生成树源代码,无限制递归子类源代码
组 -----数组的概念与定义 课程内容 数组的概念 数组的定义 一、数组的概念 假如要存储一个班学生的成绩,如果使用变量来存储成绩,就需要定义多个变量,显然这个定义的过程相当耗费时间与精力,PHP语言提供了数组来...
PHP查询xml,以数组返回PHP查询xml,以数组返回PHP查询xml,以数组返回PHP查询xml,以数组返回PHP查询xml,以数组返回PHP查询xml,以数组返回
用PHP将二维数组拼接成xml内容形式,形成的标签可以根据自己的需要进行修改
php数组遍历的类
php数组分页 数组分页 搜索整站,合适对整站搜索后,分页
PHP数组概述
js解析php数组对象数组对象数组对象.docx
php对二维数组按数组键值进行排序 @param array $array 要排序的数组 @param string $key 排序依据字段 @param string $order 排序方式,0为降序,1为升序
php购物车 php数组购物车 里面包括实例代码 同时也有相关的注释 改程序只是一个简单的实例 包括了添加购物车 修改购物车 上传购物车等
最详实的PHP数组基础知识,大家多多支持一下哦。亲爱的网友。