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

Большое спасибо! –

Смежные вопросы