关闭

多层嵌套的使用要点及优化

470人阅读 评论(0) 收藏 举报


对于多层嵌套循环 应该保证在循环中的数据库查询,最好一次性都查完,不要每次都查一次数据库。。减少查询数据库的次数


尽量避免使用多层嵌套

例子:

没优化之前

if (!empty($param['register_from_group'])) {
    $register_from = explode(',', $param['register_from_group']);
    foreach ($register_from as $key => $val) {
        $user_group = self::filter_user($val, $param);
        foreach ($user_group as $k => $v) {
            $cur_user = User::model()->find('user_id=:user_id', array(':user_id' => $v->user_id));
            $user_info[$k]['user_id'] = $v->user_id;
            $user_info[$k]['phone'] = $cur_user->user_name;
            $user_info[$k]['rid'] = isset($param['rid']) ? $param['rid'] : 0;
            $user_info[$k]['id'] = $v->id;
            $user_info[$k]['sequence_id'] = $cur_user->sequence_id;
        }
        $sms = SmsCrontabConfig::model()->find('id=:id and status=1', array('id' => $param['id']));
        $sms->uptime = time();
        $sms->save();
        self::SendReward($user_info, $param);
    }
}

优化之后:
if (!empty($param['register_from_group'])) {
    $register_from = explode(',', $param['register_from_group']);
    $user_group=array();
    foreach ($register_from as $key => $val) {
        $user_group[$key] = self::filter_user($val, $param);
    }
    $user_id=array();
    foreach($user_group as $k => $v) {
        foreach($v as $ks=>$va){
            $user_id[$ks]=$va->user_id;
        }
    }

    $criteria=new CDbCriteria();
    $criteria->select='*';
    $criteria->addInCondition('user_id',$user_id);
    $cur_user=User::model()->findAll($criteria);
    foreach($cur_user as $k=>$v){
        $user_info[$k]['user_id'] = $v->user_id;
        $user_info[$k]['phone'] = $v->user_name;
        $user_info[$k]['rid'] = isset($param['rid']) ? $param['rid'] : 0;
        $user_info[$k]['id'] = $param['id'];
        $user_info[$k]['sequence_id'] = $v->sequence_id;
        $sms = SmsCrontabConfig::model()->find('id=:id and status=1', array('id' => $param['id']));
        $sms->uptime = time();
        $sms->save();
        self::SendReward($user_info, $param);
    }

}




0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

我们来谈谈promise,讨论一下如何优雅的避免多层回调嵌套的问题

我们知道,javascript是没办法阻塞的,所有的等待只能通过回调来完成,这就造成了,回调嵌套的问题,导致代码乱到爆 举个常见的例子,一个验证问题,通过本地cookie中的uid,从服务器A获取一个key,然后从服务器B获取token,最终拿到这个token去服务器C获取用户的信息 这...
  • qiushi888
  • qiushi888
  • 2015-11-12 12:11
  • 3050

嵌套For循环性能优化分析

转载:http://cgs1999.iteye.com/blog/1596671 1、案例描述 某日,在JavaEye上看到一道面试题,题目是这样的:请对以下的代码进行优化
  • taohuaxinmu123
  • taohuaxinmu123
  • 2014-06-16 20:16
  • 6893

【Java语言】嵌套For循环性能优化案例

1 案例描述 某日,在JavaEye上看到一道面试题,题目是这样的:请对以下的代码进行优化 Java代码  for (int i = 0; i 1000; i++)  &...
  • feng88724
  • feng88724
  • 2013-02-18 10:33
  • 12019

for循环嵌套 简单优化

1 案例描述  某日,在JavaEye上看到一道面试题,题目是这样的:请对以下的代码进行优化  Java代码   for (int i = 0; i 1000; i...
  • Swimmy_GY
  • Swimmy_GY
  • 2016-03-22 10:51
  • 2921

C#消除多层if-else嵌套

if-else结构本来是个好东西,我们平时也会经常使用它来做条件判断,但是万物有利也有弊如果if-else结构嵌套太深的话就不容易理清逻辑,所以我们应该尽量避免多层if-else嵌套情况的发生。 {
  • xiaouncle
  • xiaouncle
  • 2016-11-11 11:10
  • 1512

嵌套查询的查询优化

嵌套查询的查询优化 Table of Contents 1. 嵌套查询的分类和优化概述2. Kim: On Optimizing an SQL-like Nested Query 2.1. 嵌套查询的分类 2.1.1. A 类2.1.2. N 类2.1.3. J 类2.1...
  • zedware
  • zedware
  • 2016-03-31 19:21
  • 22265

简单的实例,多层嵌套Makefile(一)

参考了网上的博客,自己整理了一份并且可以编译通过,也能够正常执行,所以就做了记录。 防止过段时间就又忘记了。 首先先上个还没执行make前的源码树: 源文件都是一个printf 没什么好讲的,主要是makefile。 首先是顶层Makefile的内容; 第1行:设置编译器 第...
  • sinat_29830917
  • sinat_29830917
  • 2017-02-17 11:37
  • 1916

提取多层嵌套JSON类型数据

package com.iteam.test;import net.sf.json.JSONArray; import net.sf.json.JSONObject; public class Test {public static void main(String[] args) { Str...
  • qq_22792489
  • qq_22792489
  • 2016-04-10 11:31
  • 9307

提取多层嵌套Json数据

在.net 2.0中提取这样的json {"name":"lily","age":23,"addr":{"city":guangzhou,"province":guangdong}...
  • smartsmile2012
  • smartsmile2012
  • 2013-12-13 17:23
  • 44788

嵌套多层的复杂拖动效果

这个功能以前一直想做,没有机会,今天正好项目需要,于是研究了下网上的资料,发现是原先想的太复杂,只要把相关的层的position都设置为relative就可以了,就是这么简单
  • foren_whb
  • foren_whb
  • 2015-12-15 16:55
  • 760
    个人资料
    • 访问:106881次
    • 积分:2060
    • 等级:
    • 排名:千里之外
    • 原创:65篇
    • 转载:203篇
    • 译文:0篇
    • 评论:7条
    文章分类
    最新评论