我用的方法是按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 =>配列(ID,FIELD1,FIELD2,FIELD3,FIELD4,FIELD5,キー)
ID |
フィールド1 |
フィールド2 | フィールド3 | フィールド4 |
キー |
|
肉1=> |
1 |
*** | *** | *** | *** | 肉1 |
2 |
*** | *** | *** | *** | 肉1 | |
3 |
*** | *** | *** | *** | 肉1 | |
4 | *** | *** | *** | *** | 肉1 | |
フルーツ2=> | 5 |
*** | *** | *** | *** | フルーツ2 |
6 | *** | *** | *** | *** | フルーツ2 | |
7 |
*** | *** | *** | *** | フルーツ2 | |
8 |
*** | *** | *** | *** | フルーツ2 | |
9 |
*** | *** | *** | *** | フルーツ2 | |
食べ物3=> | 10 |
*** | *** | *** | *** | 食べ物3 |
11 |
*** | *** | *** | *** | 食べ物3 |
实现如上数组分离代码
その後、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]);
}