php 代码优化之经典示例

yipeiwu_com6年前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:ID|Key

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]);

}

相关文章

深入探究PHP的多进程编程方法

子进程的创建 一般的子进程的写法是: <?php $pid = pcntl_fork(); if($pid == -1){ //创建失败 die('...

PHP实现负载均衡的加权轮询方法分析

本文实例讲述了PHP实现负载均衡的加权轮询方法。分享给大家供大家参考,具体如下: 1. 负载均衡算法有哪些? 轮询法:将请求按顺序轮流地分配到后端服务器上,它均衡地对待后端的每一台...

PHP基于timestamp和nonce实现的防止重放攻击方案分析

本文实例讲述了PHP基于timestamp和nonce实现的防止重放攻击方案。分享给大家供大家参考,具体如下: 以前总是通过timestamp来防止重放攻击,但是这样并不能保证每次请求都...

php过滤所有的空白字符(空格、全角空格、换行等)

在php中自带的trim函数只能替换左右两端的空格,感觉在有些情况下不怎么好使,如果要将一个字符串中所有空白字符过滤掉(空格、全角空格、换行等),那么我们可以自己写一个过滤函数。 php...

浅谈PHP中单引号和双引号到底有啥区别呢?

在PHP中,字符串的定义可以使用英文单引号' ',也可以使用英文双引号" "。 但是必须使用同一种单或双引号来定义字符串,如:'Hello World"和"Hello World'为非法...