2011-10-17 5 views
2

J'ai un tableau tridimensionnel. Je veux corriger une fonction pour la transformer en un tableau à une seule dimension et conserver la sous-clé précédente. Comment je fais ça?Comment modifier un tableau tridimensionnel en un tableau multidimensionnel (PHP)

array(2) { 
[0]=> 
array(2) { 
    [0]=> 
    array(2) { 
    ["id"]=> 
    string(1) "4" 
    ["assignedlessons"]=> 
    string(2) "69" 
    } 
    [1]=> 
    array(2) { 
    ["id"]=> 
    string(1) "4" 
    ["assignedlessons"]=> 
    string(3) "308" 
    } 
} 
array(2) { 
    [0]=> 
    array(2) { 
    ["id"]=> 
    string(1) "10" 
    ["assignedlessons"]=> 
    string(2) "50" 
    } 
    [1]=> 
    array(2) { 
    ["id"]=> 
    string(1) "10" 
    ["assignedlessons"]=> 
    string(2) "91" 
    } 
    } 
} 

Je veux transformer la structure comme celle-ci:

array(0) { 
    ["id"]=> 
    string(1) "4" 
    ["assignedlessons"]=> 
    string(2) "69" 
    } 

    array(1) { 
    ["id"]=> 
    string(1) "4" 
    ["assignedlessons"]=> 
    string(3) "308" 
    } 

    array(2) { 
    ["id"]=> 
    string(1) "10" 
    ["assignedlessons"]=> 
    string(2) "50" 
    } 
    array(3) { 
    ["id"]=> 
    string(1) "10" 
    ["assignedlessons"]=> 
    string(2) "91" 
    } 

Ce que j'est cette fonction:

function toSingleDimentionalArray($array){ 
$final = array(); 
foreach($array as $value){ 
    foreach($array as $key => $val){ 
     $final[]['id'] = $val['id']; 
     $final[]['assignedlessons'] = $val['assignedlessons']; 
    } 

} 
return $final; 
} 

Mais ce retour seulement quelque chose comme ceci:

array(19648) { 
    [0]=> 
    array(1) { 
    ["id"]=> 
string(1) "4" 
} 
    [1]=> 
    array(1) { 
    ["assignedlessons"]=> 
    string(2) "69" 
} 
    [2]=> 
    array(1) { 
    ["id"]=> 
    string(1) "4" 
} 
    [3]=> 
    array(1) { 
    ["assignedlessons"]=> 
    string(3) "308" 
} 
+0

Qu'avez-vous essayé jusqu'à présent? C'est une boucle assez simple, et ne devrait pas être trop difficile à implémenter. –

+1

Jetez un oeil à ces: http://stackoverflow.com/search?q=php+flatten+array –

+0

Votre résultat prévu n'est pas un tableau à une seule dimension – Eric

Répondre

2

Cela va k

function toNotActuallyASingleDimensionalArray($array) { 
    $final = array(); 
    foreach($array as $subarray) { 
     foreach($subarray as $val) { 
      $final[] = $val; 
     } 
    } 
    return $final; 
} 
+0

Ah, tu l'as juste devant moi! LoL – Biotox

+0

Super, ça marche parfaitement. Alors apprécie ça. –

1
$final_array = array(); 

foreach($array as $sub_array) 
{ 
    foreach($sub_array as $temp_array) 
    { 
    $final_array[] = $temp_array; 
    } 
} 
0
function simplify_array($array, $first_level=true) { 
    foreach($array as $key => $value) { 
     $last_level = !is_array($value); 
     if($last_level) { 
      return $array; 
     }else if($first_level) { 
      $return[] = simplify_array($value, false); 
     }else{ 
      return simplify_array($value, false); 
     } 
    } 
    return $return; 
} 


print_r(simplify_array($arr)); 

HTH

il travaillera pour les tableaux n dimensions

Questions connexes