Discuz教程网

php 代码优化示例

[复制链接]
authicon dly 发表于 2011-3-28 12:15:34 | 显示全部楼层 |阅读模式
今天碰到了这么一个问题,处理的数组$tempArray为如下所示形式(key已经排序),然后要根据这个结果进行分块的处理
我用的方法是按key区分块,然后在将块赋给其他的变量,然后再进行一些操作,这样用到了很多的for和foreach,而且代码量也很大,所以被退回来了。
经过上面的指导,发现真的好简单,现在与大家一同分享。
  1. ID
  2. FIELD1
  3. FIELD2 FIELD3 FIELD4 Key

  4. 1
  5. *** *** *** *** meat1

  6. 2
  7. *** *** *** *** meat1
  8. 3
  9. *** *** *** *** meat1
  10. 4 *** *** *** *** meat1
  11. 5
  12. *** *** *** *** fruit2
  13. 6 *** *** *** *** fruit2
  14. 7
  15. *** *** *** *** fruit2
  16. 8
  17. *** *** *** *** fruit2
  18. 9
  19. *** *** *** *** fruit2
  20. 10
  21. *** *** *** *** food3
  22. 11
  23. *** *** *** *** food3
复制代码

现在有如上所示的结果
要求:要对这个已经按key进行排序了的数组进行操作,相同key的项进行处理。
提示:这个是很典型的母子表的结构,也就是说其实它是两张表的合并,可以这样处理成两个数组,方便数组里面对块的操作


  1. array1:ID|Key
  2. ID
  3. Key

  4. 1
  5. meat1

  6. 2
  7. meat1
  8. 3
  9. meat1
  10. 4 meat1
  11. 5
  12. fruit2
  13. 6 fruit2
  14. 7
  15. fruit2
  16. 8
  17. fruit2
  18. 9
  19. fruit2
  20. 10
  21. food3
  22. 11
  23. food3
  24. array2:key => array(ID,FIELD1,FIELD2,FIELD3,FIELD4,FIELD5,Key)

  25. ID
  26. FIELD1
  27. FIELD2 FIELD3 FIELD4 Key

  28. meat1=>
  29. 1
  30. *** *** *** *** meat1

  31. 2
  32. *** *** *** *** meat1
  33. 3
  34. *** *** *** *** meat1
  35. 4 *** *** *** *** meat1
  36. fruit2=> 5
  37. *** *** *** *** fruit2
  38. 6 *** *** *** *** fruit2
  39. 7
  40. *** *** *** *** fruit2
  41. 8
  42. *** *** *** *** fruit2
  43. 9
  44. *** *** *** *** fruit2
  45. food3=> 10
  46. *** *** *** *** food3
  47. 11
  48. *** *** *** *** food3
复制代码

实现如上数组分离代码
这样后,访问tempArray的块数据就非常方便了

  1. foreach($tempArray as $row){
  2.   array1[$row['ID']] = $row['Key'];
  3.   array2[$row['Key']][] = $row;
  4. }
  5. 访问和处理代码
  6. foreach($array1 as $ID => $Key){
  7.   $this->doSomeThing($ID);
  8.   //访问tempArray的块数组$array2[$Key]
  9.   $this->doSomeThing2($array2[$Key]);
  10. }
复制代码






上一篇:PHP变量使用总结
下一篇:php发送邮件的类,php邮件发送
authicon D_hong 发表于 2011-5-10 17:59:38 | 显示全部楼层
回贴下载呀
authicon melody0721 发表于 2011-5-14 19:00:06 | 显示全部楼层
支持一下,确实是不错的贴子。
authicon rin421 发表于 2011-5-15 23:00:00 | 显示全部楼层
顶的就是你
authicon icenna 发表于 2011-5-17 00:00:02 | 显示全部楼层
看看  好像不错
authicon 馥郁渊汀 发表于 2011-5-21 10:53:13 | 显示全部楼层
有意思~顶顶 ,继续顶顶。继续顶哦
authicon summmer 发表于 2011-5-24 15:59:59 | 显示全部楼层
支持一下,确实是不错的贴子。
authicon lightning123 发表于 2011-5-24 20:00:00 | 显示全部楼层
好东西要顶的。
authicon forever21 发表于 2011-6-18 11:59:56 | 显示全部楼层
顶啦,不错吧
authicon soul2511 发表于 2011-6-19 16:59:51 | 显示全部楼层
不错,我喜欢
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1314学习网 ( 浙ICP备10214163号 )

GMT+8, 2025-5-2 18:50

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表