今天碰到了这么一个问题,处理的数组$tempArray为如下所示形式(key已经排序),然后要根据这个结果进行分块的处理
我用的方法是按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]);
- }
复制代码
|