2011-10-17 28 views
2

私は3次元配列を持っています。私はそれを1次元の配列に変換し、前のサブキーを保持する関数を右にしたいと思います。それ、どうやったら出来るの?3次元配列を1次元配列(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" 
    } 
    } 
} 

私はこの1つのような構造にそれを変換したい:

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" 
    } 

は私が持っていることは、この機能である:

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

} 
return $final; 
} 

しかし、それだけでこのような何かを返す:

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

のために働くのだろうか?これはかなり単純明快なループであり、実装するのが難しいはずはありません。 –

+1

以下を見てください:http://stackoverflow.com/search?q=php+flatten+array –

+0

あなたの意図する結果は一次元配列ではありません – Eric

答えて

2

これはworです。 HTH

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

ああ、あなたは私の前でそれを手に入れました! LoL – Biotox

+0

偉大な、それは完璧に動作します。それで感謝します。 –

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

kは、それはあなたがこれまでに試してみました何のn次元配列