2012-01-13 49 views
-1

嗨staskoverflow社区。php代码改进重构

我该如何改进PHP 5代码的下一个结构。 的车型售价$个月(超过12) $月 - >天(超过31个)

$ day->客户的客户名单 $ day-> someActions为$客户

的动作列表

我需要为每个$ client调用每个$动作。所以我的建设是:

<?php 
foreach($monthes as $month) { 
    foreach($month->days as $day) { 
     foreach($day->clients as $client) { 
      foreach($day->actions as $action) { 
       $action->run($client); 
      } 
     } 
    } 
} ?> 

所以有四个foreach循环,我可以改进这个代码?

+3

我不认为你可以提高这个特定的代码块的性能或可读性。也许如果你能解释这些$动作是什么,或者这个应用程序做了什么,我们可能会提供帮助。例如,你的'days'和'clients'属性是从数据库中懒洋洋地填充的吗?在这种情况下,这个代码可能会变得非常缓慢,有很多客户和几个月。简而言之,我说:需要更多的背景。 – 2012-01-13 09:03:37

+1

您可能也有兴趣http://codereview.stackexchange.com/ – Mchl 2012-01-13 09:14:59

+0

谢谢,我会按原样使用它。 – RusAlex 2012-01-13 09:16:06

回答

2

为什么要移出嵌套循环? 你的代码是很清楚的了解,如果你的目标是优化该方法的性能,那么这种方法我会去将是:

  1. 我会先尽量减少迭代次数。您可以通过向自己提问来做到这一点,比如我真的想在旅途中显示多少个月的数据?
  2. 类似的问题可以问关于天和客户
  3. 你有休息条件?我的意思是,

    $ result = $ action-> run($ client); (“break_condition”== $ result) if(break_condition == == $ result){ break; }

这应该会大大减少迭代次数。