php 代码优化之经典示例

我用的方法是按key区分块,然后在将块赋给其他的变量,然后再进行一些操作,这样用到了很多的for和foreach,而且代码量也很大,所以被退回来了。

经过上面的指导,发现真的好简单,现在与大家一同分享。

ID FIELD1 FIELD2 FIELD3 FIELD4 Key
1 *** *** *** *** meat1
2 *** *** *** *** meat1
3 *** *** *** *** meat1
4 *** *** *** *** meat1
5 *** *** *** *** fruit2
6 *** *** *** *** fruit2
7 *** *** *** *** fruit2
8 *** *** *** *** fruit2
9 *** *** *** *** fruit2
10 *** *** *** *** food3
11 *** *** *** *** food3

现在有如上所示的结果

要求:要对这个已经按key进行排序了的数组进行操作,相同key的项进行处理。

提示:这个是很典型的母子表的结构,也就是说其实它是两张表的合并,可以这样处理成两个数组,方便数组里面对块的操作
array1:IDKey

ID Key
1 meat1
2 meat1
3 meat1
4 meat1
5 fruit2
6 fruit2
7 fruit2
8 fruit2
9 fruit2
10 food3
11 food3

array2:key => array(ID,FIELD1,FIELD2,FIELD3,FIELD4,FIELD5,Key)

ID FIELD1 FIELD2 FIELD3 FIELD4 Key
meat1=> 1 *** *** *** *** meat1
2 *** *** *** *** meat1
3 *** *** *** *** meat1
4 *** *** *** *** meat1
fruit2=> 5 *** *** *** *** fruit2
6 *** *** *** *** fruit2
7 *** *** *** *** fruit2
8 *** *** *** *** fruit2
9 *** *** *** *** fruit2
food3=> 10 *** *** *** *** food3
11 *** *** *** *** food3

实现如上数组分离代码

这样后,访问tempArray的块数据就非常方便了

foreach($tempArray as $row){

  array1[$row['ID']] = $row['Key'];

  array2[$row['Key']][] = $row;

}

访问和处理代码

foreach($array1 as $ID => $Key){

  $this->doSomeThing($ID);

  //访问tempArray的块数组$array2[$Key]

  $this->doSomeThing2($array2[$Key]);

}

时间: 2024-11-03 08:22:44

php 代码优化之经典示例的相关文章

php 代码优化之经典示例_php技巧

我用的方法是按key区分块,然后在将块赋给其他的变量,然后再进行一些操作,这样用到了很多的for和foreach,而且代码量也很大,所以被退回来了. 经过上面的指导,发现真的好简单,现在与大家一同分享. ID FIELD1 FIELD2 FIELD3 FIELD4 Key 1 *** *** *** *** meat1 2 *** *** *** *** meat1 3 *** *** *** *** meat1 4 *** *** *** *** meat1 5 *** *** *** ***

qtp-QTP描述性编程-经典示例

问题描述 QTP描述性编程-经典示例 Set Baidu=Browser("micClass:=Browser").Page("micClass:=Page") Print Baidu.Link("name:=新闻").Exist 该答案是False还是True?希望解释其原因 解决方案 这个取决于浏览器的页面上是否存在一个叫新闻的链接. 解决方案二: 存在就是true,否则就是false

ASP调用SqlServer存储过程的经典示例(原创)

ASP调用SqlServer存储过程的经典示例 1.无输入参数,无返回值这种方式比较少见,但也是一种情况.ConnString="Dsn=DsnName;Uid=user;Pass=pass"Set Conn = Server.CreateObject("Adodb.Connection")Conn.Open ConnStringConn.Execute "ProcName" 2.两个输入参数,无返回值ConnString="Dsn=D

10个Java 8 Lambda表达式经典示例

Java 8 刚于几周前发布,日期是2014年3月18日,这次开创性的发布在Java社区引发了不少讨论,并让大家感到激动.特性之一便是随同发布的lambda表 达式,它将允许我们将行为传到函数里.在Java 8之前,如果想将行为传入函数,仅有的选择就是匿名类,需要6行代码.而定义行为最重要的那行代码,却混在中间不够突出.Lambda表达式取代了匿名 类,取消了模板,允许用函数式风格编写代码.这样有时可读性更好,表达更清晰.在Java生态系统中,函数式表达与对面向对象的全面支持是个激动人心的进 步

MSDN官方的ASP.Net异步页面的经典示例代码

示例1.演示异步获取一个网址的内容,处理后显示在OutPut这一Label上  1using System; 2using System.Web; 3using System.Web.UI; 4using System.Web.UI.WebControls; 5using System.Net; 6using System.IO; 7using System.Text; 8using System.Text.RegularExpressions; 910public partial class 

Lua 笔记--编译、执行、错误与协同程序

        一般dofile 可以这样来定义: function dofile(filename)     local f = assert(loadfile(filename))     return f() end 注意,如果loadfile 失败,那么其中assert 就会引发一个错误.         函数loadstring 与loadfile 类似,不同之处在于它是从一个字符串中读取代码,而非从文件读取.例如,如下代码: f = loadstring("i = i + 1&quo

Duwamish深入剖析-结构篇

摘要:本文深入详细的介绍了Duwamish网上电子书店例程的结构框架,并详细的分析了该结构的若干特点和设计模式. -------------------------------------------------------------------------------- 目录:引言 Duwamish介绍 结构分析 设计思想 代码示例 总结 作者 --------------------------------------------------------------------------

积少成多 Flash(ActionScript 3.0 & Flex 3.0) 系列文章索引

Flash 之 ActionScript 3.0 1.积少成多Flash(1) - ActionScript 3.0 基础之数据类型.操作符和流程控制语句 介绍 Flash ActionScript 3.0 中所有的数据类型都是对象,操作符和流程控制语句的语法与C#类似   2.积少成多Flash(2) - ActionScript 3.0 基础之包.类.包外类.命名空间.属性.方法.接口和继承 介绍 Flash ActionScript 3.0 是一种面向对象的语言,包.类.包外类.命名空间.

积少成多Flash(5)

介绍 通过一个经典示例,即闹钟,对使用Flash ActionScript 3.0画图.做动画有 一个大概的了解,并通过此示例学习自定义事件的开发 自定义事件 - 继承自 Event ,一个 public static const 定义事件类型, 其他 public 变量定义事件属性 画图 - 通过 Shape 对象的 graphics 属性来执行矢量绘图命令 动画 - 通过 Timer 对象或监听 Event.ENTER_FRAME 事件 1.自定义事件(闹钟到点后所触发的自定义事件) Ala