2013-04-27 108 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