2012-04-17 12 views
0

foreachループ:重複出力誤差

$aNewCodes = array("93", "355", "213"); 
$aServiceProviderId = array(); 
$oTerminationRate = new TerminationRate(); 

foreach ($aNewCodes as $iNewCodesKey => $iNewCodesValue) 
{ 
    $oTerminationRate->GetServiceProviders($aServiceProviderId, $iNewCodesValue); 

    foreach($aServiceProviderId as $iProviderKey => $iProviderValue) 
    { 
     echo $iNewCodesValue." :: ".$iProviderValue."<br>"; 
    } 
} 

を次のように私のコードがあり、それは私にこのような出力を提供します -

93 :: 1 
93 :: 2 
355 :: 1 
355 :: 2 
355 :: 1 
355 :: 2 
213 :: 1 
213 :: 2 
213 :: 1 
213 :: 2 
213 :: 1 
213 :: 2 

は、実は私はこのような出力を期待しています -

93 :: 1 
93 :: 2 
355 :: 1 
355 :: 2 
213 :: 1 
213 :: 2 

その出力を得るためにたくさん試しましたが、成功はありません。どこで行方不明ですか?

+0

'GetServiceProviders'が最初の引数*を参照で受け入れる部分が見つからないことがあります。*を参照して2つの項目を追加します。そうでなければ、あなたのコードは* any *出力を与えません。 – Jon

+0

はい、参照で受け入れ、コードは出力を返します。 – skos

答えて

1

ループの各繰り返しで配列aServiceProviderIdから以前のエントリを削除しないという問題があります。右

$oTerminationRate->GetServiceProviders($aServiceProviderId, $iNewCodesValue); 

前にそして、あなたは大丈夫でなければなりません - 最初のループの内側のライン

$aServiceProviderId = array(); 

入れてください。

+0

したがって、このスニペットの**どこでも**使用されていない変数の値をリセットすると問題は解決しますか? – Jon

+0

'$ oProviderForCountry = new ProviderForCountry();'はコード内で不要です – skos

+0

@Jon申し訳ありませんが、OPのコードから間違った行をコピー/貼り付けました。私は今それを修正しました。 –