2012-11-13 54 views
0

我试图格式化数据,以便我的json代码可以正确读取它。最终结果需要如下所示:多维foreach数组只返回最后一次迭代

[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()输出follwing:

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);

+0

一开始,在嵌套循环的属性值,使用不同的名字,不要重复使用'$ divValue'。另外,你实际上并没有对'$ array_1','$ array_2'的最终值做任何事情。 –

+0

你准确地倾销了什么? –

+0

很好的捕获$ divValue的重用。我var_dump($ array_2) – Patrick

回答

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); 
       } 
      } 
     } 
} 
相关问题