2012-02-22 48 views
1

給出下面的陣列重排陣值「根級別」

array(
    0 => array(
    'id' => '54'), 
    1 => array(
    'id' => '11'), 
    2 => array(
    'id' => '2') 
); 

是否有一個(最好是內置)函數將其重新安排到

array(
    0 => '54', 
    1 => '11', 
    2 => '2' 
); 
在PHP

我目前的方式是迭代數組並將其保存到另一個,這看起來非常冗餘,速度慢,效率低。

$newArray = array(); 
foreach ($oldArray as $innerArray { 
    $newArray[] = $innerArray['id']; 
} 
+0

那你試試這麼遠嗎? – 2012-02-22 09:55:44

+0

查看我更新的問題。 – 2012-02-22 10:01:39

回答

2

如何使用array_walk

function array_flatten(&$item){ 
    $item = $item['id']; 
} 

array_walk($array, 'array_flatten'); 
+0

這看起來很整齊,簡單,甚至是高性能 - 我會試一試並回報。 – 2012-02-22 10:04:21

+0

... ps,這不適用於嵌套數組(超過1級);對於嵌套數組,您需要一個遞歸解決方案,例如Sarfraz發佈的解決方案 – scibuff 2012-02-22 10:07:24

0

這個怎麼樣?

$arr = array(
    0 => array(
    'id' => '54'), 
    1 => array(
    'id' => '11'), 
    2 => array(
    'id' => '2') 
); 
$newArr = call_user_func_array('array_merge_recursive',$arr); 
print_r($newArr['id']);