<legend id='LaXNd'><style id='LaXNd'><dir id='LaXNd'><q id='LaXNd'></q></dir></style></legend>

      1. <i id='LaXNd'><tr id='LaXNd'><dt id='LaXNd'><q id='LaXNd'><span id='LaXNd'><b id='LaXNd'><form id='LaXNd'><ins id='LaXNd'></ins><ul id='LaXNd'></ul><sub id='LaXNd'></sub></form><legend id='LaXNd'></legend><bdo id='LaXNd'><pre id='LaXNd'><center id='LaXNd'></center></pre></bdo></b><th id='LaXNd'></th></span></q></dt></tr></i><div id='LaXNd'><tfoot id='LaXNd'></tfoot><dl id='LaXNd'><fieldset id='LaXNd'></fieldset></dl></div>
      2. <small id='LaXNd'></small><noframes id='LaXNd'>

      3. <tfoot id='LaXNd'></tfoot>
          <bdo id='LaXNd'></bdo><ul id='LaXNd'></ul>

        千篇一律的foreach优化

        时间:2023-09-23
        • <bdo id='ssxnF'></bdo><ul id='ssxnF'></ul>
          <tfoot id='ssxnF'></tfoot>

          <i id='ssxnF'><tr id='ssxnF'><dt id='ssxnF'><q id='ssxnF'><span id='ssxnF'><b id='ssxnF'><form id='ssxnF'><ins id='ssxnF'></ins><ul id='ssxnF'></ul><sub id='ssxnF'></sub></form><legend id='ssxnF'></legend><bdo id='ssxnF'><pre id='ssxnF'><center id='ssxnF'></center></pre></bdo></b><th id='ssxnF'></th></span></q></dt></tr></i><div id='ssxnF'><tfoot id='ssxnF'></tfoot><dl id='ssxnF'><fieldset id='ssxnF'></fieldset></dl></div>
            <tbody id='ssxnF'></tbody>
            <legend id='ssxnF'><style id='ssxnF'><dir id='ssxnF'><q id='ssxnF'></q></dir></style></legend>
          • <small id='ssxnF'></small><noframes id='ssxnF'>

                  本文介绍了千篇一律的foreach优化的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                  问题描述

                  我正在对一组 25,000 结果运行下面的代码.我需要优化它,因为我达到了内存限制.

                  I'm running the code below over a set of 25,000 results. I need to optimize it because i'm hitting the memory limit.

                  $oldproducts = Oldproduct::model()->findAll(); /*(here i have 25,000 results)*/
                  
                  foreach($oldproducts as $oldproduct) :
                      $criteria = new CDbCriteria;
                      $criteria->compare('`someid`', $oldproduct->someid);
                      $finds = Newproduct::model()->findAll($criteria);
                  
                      if (empty($finds)) {
                          $new = new Newproduct;
                          $new->someid = $oldproduct->someid;
                          $new->save();
                      } else {
                          foreach($finds as $find) :
                              if ($find->price != $oldproduct->price) {
                                  $find->attributes=array('price' => $oldproduct->price);
                                  $find->save();
                              }
                          endforeach;
                      }
                  endforeach;
                  

                  代码通过someid比较两个表的行.如果发现巧合,它会更新 price 列,否则会创建一个新记录.

                  Code compares rows of two tables by someid. If it find coincidence it updates price column, if not creates a new record.

                  推荐答案

                  使用 CDataProviderIterator 其中:

                  Use CDataProviderIterator which:

                  ... 允许对大型数据集进行迭代,而无需将整个数据集保存在内存中.

                  ... allows iteration over large data sets without holding the entire set in memory.

                  您首先必须将 CDataProvider 实例传递给它:

                  You first have to pass a CDataProvider instance to it:

                  $dataProvider = new CActiveDataProvider("Oldproduct");
                  $iterator = new CDataProviderIterator($dataProvider);
                  foreach($iterator as $item) {
                      // do stuff
                  }
                  

                  这篇关于千篇一律的foreach优化的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                  上一篇:如何在php中的foreach语句的每三个结果上输出一个 下一篇:来自foreach的php随机顺序

                  相关文章

                  最新文章

                1. <i id='Rvw48'><tr id='Rvw48'><dt id='Rvw48'><q id='Rvw48'><span id='Rvw48'><b id='Rvw48'><form id='Rvw48'><ins id='Rvw48'></ins><ul id='Rvw48'></ul><sub id='Rvw48'></sub></form><legend id='Rvw48'></legend><bdo id='Rvw48'><pre id='Rvw48'><center id='Rvw48'></center></pre></bdo></b><th id='Rvw48'></th></span></q></dt></tr></i><div id='Rvw48'><tfoot id='Rvw48'></tfoot><dl id='Rvw48'><fieldset id='Rvw48'></fieldset></dl></div>

                  <small id='Rvw48'></small><noframes id='Rvw48'>

                    1. <tfoot id='Rvw48'></tfoot>
                      • <bdo id='Rvw48'></bdo><ul id='Rvw48'></ul>
                    2. <legend id='Rvw48'><style id='Rvw48'><dir id='Rvw48'><q id='Rvw48'></q></dir></style></legend>