2012-12-21 124 views
4

我有一個mutidimensional陣列得到的結果類似下面給出如何在PHP中將二維數組轉換爲一維數組?

Array 
(
    [0] => Array 
     (
      [0] => 70 
     ) 

    [1] => Array 
     (
      [0] => 67 
     ) 

    [2] => Array 
     (
      [0] => 75 
      [1] => 73 
      [2] => 68 
     ) 

    [3] => Array 
     (
      [0] => 68 
     ) 

    [4] => Array 
     (
      [0] => 76 
     ) 

) 

但我需要將其轉換爲單一陣列

而且我想在轉換成一維數組作爲

Array 
(
[0] => 70 
[1] => 67 
[2] => 75 
[3] => 73 
[4] => 68 
[5] => 68 
[6] => 76 
) 

如何使用php函數進行轉換?

還有其他方法可以做到嗎?

+1

http://whathaveyoutried.com/的 – Oussama

+0

可能重複的[如何「變平」的多維陣列,以簡單的一個在PHP?](http://stackoverflow.com/questions/526556/how-to- flatten-a-multi-dimensional-array-to-simple-in-php) –

回答

15

您可以嘗試

$it = new RecursiveIteratorIterator(new RecursiveArrayIterator($data)); 
$l = iterator_to_array($it, false); 

var_dump($l); // one Dimensional 
+0

而且我們可以添加排序($ l); $ l = array_unique($ l);用於刪除重複的元素併爲新數組進行適當索引 –

2

嘗試:

$input = array(/* your array*/); 
$output = array(); 

foreach ($input as $data) { 
    $output = array_merge($output, $data); 
} 
+0

只需使用'$ final'而不是'$ input'。 – hsz

0

這應該做的伎倆

$final = array(); 
foreach ($outer as $inner) { 
    $final = array_merge($final, $inner); 
} 
var_dump($final); 

或者你可以使用array_reduce()如果你有PHP >= 5.3

$final = array_reduce($outer, function($_, $inner){ 
    return $_ = array_merge((array)$_, $inner); 
}); 
var_dump($final); 
1

您可以使用array_walk_recursive()對於再加上封閉:

$res = array(); // initialize result 

// apply closure to all items in $data 
array_walk_recursive($data, function($item) use (&$res) { 
    // flatten the array 
    $res[] = $item; 
}); 

print_r($res); // print one-dimensional array 
0

對於一個更通用的功能,可以處理多維數組,選中此功能,

function arrayFlattener($input = array(), &$output = array()) { 
    foreach($input as $value) { 
    if(is_array($value)) { 
     arrayFlattener($value, $output); 
    } else { 
     $output[] = $value; 
    } 
    } 
} 

你可以找到一個例子here

0

通過使用此功能,您可以將任何維數組轉換爲單維數組。

$result = array(); 
$data = mearchIntoarray($result,$array); 
function mearchIntoarray($result,$now) 
{ 
    global $result; 
    foreach($now as $key=>$val) 
    { 
     if(is_array($val)) 
     { 
      mearchIntoarray($result,$val); 
     } 
     else 
     { 
      $result[] = $val; 
     } 
    } 
    return $result; 
} 

其中$ array是給定的數組值。