0

JSONコードが正しく読み取れるように、データをフォーマットしようとしています。最終結果は次のようになります。

[2][4][36] = 'Ohio'

ここで、'2' は地域 ID、'4' は部門 ID、'36' は州 ID です。明らかに、選択された地域と部門に基づいてさまざまな結果が得られますが、上記のようにすべての結果を返す必要があります。

以下のコードから得た結果は、最後の反復のみを返します。私は何が間違っているのだろうかと思っています:

$divisionCodeResults = array();
    foreach($regionCodes as $key => $value){        
       $divisionCodeResults[$key] = $divisionTable->getDivisionResultsByRegionCode($key);                
            foreach($divisionCodeResults as $divValue){
                $array_1 = array();
                foreach($divValue as $divKey => $div2Value){                    
                    $array_1[$divKey] = $divKey;   
                    $array_2 = array();
                    foreach($array_1 as $array_1_value){                        
                        $array_2[$key][$divKey] = Doctrine_Core::getTable('state')->getStatesIdAndNamesThatMatchDivisionKey($array_1_value);
                    }
                }
           }
    }

上記の var_dump() は次を出力します。

array (size=1)
  6 => 
    array (size=1)
      11 => 
        array (size=2)
          52 => string 'Puerto Rico' (length=11)
          54 => string 'Virgin Islands' (length=14)

これは正しくフォーマットされていますが、前述のように、長い多次元配列の最後の反復のみを返しています。

私が間違っていることの説明をいただければ幸いです...事前に感謝します。

編集:

array (size=5)
  2 => 
    array (size=2)
      4 => string 'East North Central' (length=18)
      5 => string 'West North Central' (length=18)
  3 => 
    array (size=2)
      2 => string 'New England' (length=11)
      3 => string 'Mid-Atlantic' (length=12)
  4 => 
    array (size=3)
      6 => string 'South Atlantic' (length=14)
      7 => string 'East South Central' (length=18)
      8 => string 'West South Central' (length=18)
  5 => 
    array (size=2)
      9 => string 'Mountain' (length=8)
      10 => string 'Pacific' (length=7)
  6 => 
    array (size=1)
      11 => string 'Carribean' (length=9)

上記は次の結果です: var_dump($divisionCodeResults);

4

1 に答える 1

0

次のように、$array_1 と $array_2 をループの外に移動します。

$array_1 = array();
$array_2 = array();
$divisionCodeResults = array();
foreach($regionCodes as $key => $value){        
    $divisionCodeResults[$key] = $divisionTable->getDivisionResultsByRegionCode($key);                
        foreach($divisionCodeResults as $divValue){
//                $array_1 = array();
            foreach($divValue as $divKey => $div2Value){                    
                $array_1[$divKey] = $divKey;   
//                    $array_2 = array();
                foreach($array_1 as $array_1_value){                        
                    $array_2[$key][$divKey] = Doctrine_Core::getTable('state')->getStatesIdAndNamesThatMatchDivisionKey($array_1_value);
                }
            }
        }
}
于 2012-11-15T16:30:10.707 に答える