美文网首页程序员
解耦关联循环(PHP)

解耦关联循环(PHP)

作者: 枫叶也疯狂 | 来源:发表于2016-11-23 23:13 被阅读0次

1 起因

最近在项目中经常会使用foreach来遍历数组,有的时候一层循环往往不能解决问题,需要使用两层或者多层循环来遍历数据,尤其是两层循环中的数据具有某种关联性的时候,之前项目组的人包括我一直都是使用双层循环来解决这种有关联数据的遍历;但是,有的时候感觉总是双层循环很丑,能否拆分成两个循环来,而且单层循环的性能要比双层好。

2 例子+解决

例如一个集合A (idA,gno,dataindex...),集合B(gno,idB,data...),因为某些原因需要找出集合A和集合B中gno相等的数据,并且返回一个list,这时候我想大多数人的想法是使用双层循环来遍历,例如这样:

foreach($listA as $v){
 foreach($listB as $val) {
      if($v->gno == $val->gno)
       {//to do }

   }
}

其实可以这样写,

foreach($listA as $v){ 
    $list[$v->gno] = $v
}

我们用一个新的list来保存listA中的数据,并使用关联的属性作为键值,这样再来遍历listB,如下:

foreach($listB as $key=>$val){
          $list[$key]->propertyNeed = $list[$val->gno]->propertyNeed
}

这样的方式就解开双层循环,性能有所提升。

3 总结

以上的想法是我在项目中遇到的一个小小提升,但是我认为每一个小的提升必将导致大的改变。当然这个方式并不适合所有的情况。如果有遇到这种情况的少侠,希望能够给与给好的建议,也是做个记录。

--every step will make a difference.

相关文章

  • 解耦关联循环(PHP)

    1 起因 最近在项目中经常会使用foreach来遍历数组,有的时候一层循环往往不能解决问题,需要使用两层或者多层循...

  • 为什么工厂模式可以解耦?why?

    1、聊聊解耦? 耦合:代码之间的关联关系称为耦合,具有强关联关系的称为强耦合。 解耦:解除代码之间的关联关系,使每...

  • PHP消息队列(解耦)

    这只是一个思路,用于处理订单和配送系统的解耦 数据库结构 订单系统 创建订单往队列里面写数据 配送系统 通过定时任...

  • 解耦

    解耦 对于大型重构, 最有效的手段就是 解耦, 解耦的目的使实现代码高聚合、松耦合。 解耦为何如此...

  • 设计原则

    一、低耦合 模块之间只存在消息交流,不存在功能上的强关联,不会彼此影响,可以随时拆分。 二、解耦 降低两个模块的耦...

  • 20171127-03问题整理

    总摘要: 解耦. 接口降低. 架构. 2017-11-27摘要: 解耦. 接口降低. 架构. 1.为什么说解耦的...

  • 十月十七号

    PHP数组之foreach循环访问关联数组里的值 $fruit=array('apple'=>"苹果",'bana...

  • 解耦

    今天小董给大家做了一个关于DMTP的精彩演讲,DMTP种种优秀的特性令我们这些听众叹为观止。 为何DMTP具有如此...

  • 解耦

    利用配置文件实现解耦 存在一个接口B 有3个实现类B1、B2、B3 在A类方法中需要调用B类实现代码: 此情况下,...

  • DDD 中的事件总线 (一)

    DDD 为什么需要event bus? 简单的说就是 解耦 ,无论是本地聚合间的解耦,还是微服务间的解耦. 没有e...

网友评论

    本文标题:解耦关联循环(PHP)

    本文链接:https://www.haomeiwen.com/subject/cptbpttx.html