2012-01-13 82 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; }

這應該會大大減少迭代次數。