2011-10-17 112 views
2

我有一个三维数组。我想要一个函数将其转换为单维数组并保留前一个子键。我怎么做?如何将三维数组更改为一维数组(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" 
    } 
    } 
} 

我想把它转换到结构像这样的:

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

This will wor ķ

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

HTH

它将为n维数组

相关问题