2013-04-27 72 views
2

我真的被困在我的项目中的某个点上。我试图将二维数组转换为三维数组。目前I'm在这一点上:三维数组循环

array (size=4) 
    0 => 
    array (size=4) 
     0 => string 'foo' (length=3) 
     1 => string 'a' (length=0) 
     2 => string 'b' (length=0) 
     3 => string '0' (length=1) 
    1 => 
    array (size=4) 
     0 => string 'bar' (length=3) 
     1 => string 'a' (length=0) 
     2 => string 'b' (length=0) 
     3 => string '1' (length=1) 
    2 => 
    array (size=4) 
     0 => string 'bas' (length=3) 
     1 => string 'a' (length=0) 
     2 => string 'b' (length=0) 
     3 => string '1' (length=1) 
    3 => 
    array (size=4) 
     0 => string 'tas' (length=3) 
     1 => string 'a' (length=0) 
     2 => string 'b' (length=0) 
     3 => string '0' (length=1) 

我想这样做的就是用数组的键值新阵列[] [3](我希望这是任何意义上的),所以是这样的:

array (size=2) 
    0 => array (size=2) 
     0 => array (size=2) 
        0 => string 'foo' (length=3) 
        1 => string 'a' (length=0) 
        2 => string 'b' (length=0) 
     1 => array (size=2) 
        0 => string 'tas' (length=3) 
        1 => string 'a' (length=0) 
        2 => string 'b' (length=0) 
    1 => array (size=2) 
     0 => array (size=2) 
        0 => string 'bar' (length=3) 
        1 => string 'a' (length=0) 
        2 => string 'b' (length=0) 
     1 => array (size=2) 
        0 => string 'bas' (length=3) 
        1 => string 'a' (length=0) 
        2 => string 'b' (length=0) 

现在这是我可以解释它的最好方法,我不确定我是否有任何意义,或者如果这甚至是可能的,但如果任何人都可以阐明这一点,将非常感谢!

由于提前,

托马斯

回答

1
$array = array(); 
$array[] = array('foo','foo','foo',1); 
$array[] = array('a','a','a',1); 
$array[] = array('b','a','a',0); 
$array[] = array('c','a','a',0); 
$new_array =group_by_sub_array_key($array,3); 
print_r($new_array); 


function group_by_sub_array_key($array,$kn){ 
$new_array = array(); 
foreach($array AS $v){ 
    $key=$v[$kn]; 
    if(!array_key_exists($v[$kn],$new_array)){ 
    $new_array[$key]=array(); 
    } 
    unset($v[$kn]); 
    $new_array[$key][] = $v; 
} 

return $new_array; 
} 
+0

非常感谢您! – 2013-04-27 10:28:27