2012-06-03 189 views
1

我有我的腳本返回以下數組。如何將多維數組轉換爲一維數組?

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

    [1] => Array 
     (
      [id] => 68 
     ) 

    [2] => Array 
     (
      [id] => 69 
     ) 

    [3] => Array 
     (
      [id] => 70 
     ) 

) 

我怎樣才能將其轉換爲:

Array 
(
    [0] => 67 

    [1] => 68 

    [2] => 69 

    [3] => 70 
) 

我只是在感興趣的ID返回。

回答

3

array_map()是一種可能性,因爲它將由回調返回的任何值累加到其返回的數組中。回調然後只需要返回id

$flat = array_map(function($a) {return $a['id'];}, $orig_array); 

以上要求PHP 5.3+,因爲它使用了一個匿名函數,但同樣可以作爲一個字符串傳遞array_map()命名函數來實現。

否則,一個foreach循環是非常傳統的,可以保留原來的鍵,然後是非順序的。

$flat = array(); 
foreach ($orig_array as $key => $a) { 
    $flat[$key] = $a['id']; 
} 
+0

wtb'array_pluck()' – goat

+0

@chris [沒有內建'array_pluck()'](http://us2.php.net/manual/en/ref.array.php)tmk。很多關於如何製作它們的例子。 –

1
$temp = call_user_func_array('array_merge_recursive', $arr); 
$final = $temp['id']; 
print_r($final); 

爲什麼說工作是棘手的。老實說,只需使用foreach循環。

1

繼續@Mickael's answer,你也可以使用array_walk()功能:

function format(&$item, $key) { 
    $item = $item["id"]; 
} 

array_walk($arr, "format"); 

或與lambda函數一行:

array_walk($arr, create_function('&$item, $key', '$item = $item["id"];')); 

它直接與您的陣列,因此我們可以很容易地把它稱爲​​「數組轉換「。

相關問題