2014-05-07 43 views
0

是否有將數組中的數組作爲鍵或值移動到父數組的特定函數?將數組移動到父數組php

array(5) { [0]=> array(1) { [0]=> string(2) "id" } [1]=> array(1) { [0]=> string(7) 
"buydate" } [2]=> array(1) { [0]=> string(6) "expire" } [3]=> array(1) { [0]=> string(6) 
"planid" } [4]=> array(1) { [0]=> string(5) "buyer" } } 

結果,我想獲得的是:

array() { [0] => 'id', [1] => 'buydate' etc. } 

或者

array('id', 'buydate' etc..) 

是否有可能實現無的foreach?

+0

任何理由? – meda

+0

我更喜歡使用函數而不是每次使用foreach。 – user1876234

+0

...以及您認爲該功能使用的是什麼... – patrick

回答

1

array_map()是非常強大的,應該做的伎倆:爲什麼你不想要的foreach

$array = ... ; // your initial array 
$flattened_array = array_map(function($item) { 
    return $item[0]; 
}, $array); 
1

如果您想要將所需陣列弄平,並使用foreach,則可以這樣做。

考慮這個例子:

// Sample data: 
$values = array(
    0 => array(
     0 => 'id', 
    ), 
    1 => array(
     0 => 'buydate', 
    ), 
    2 => array(
     0 => 'expire', 
    ), 
    3 => array(
     0 => 'planid', 
    ), 
    4 => array(
     0 => 'buyer', 
    ), 
); 

$new_values = array(); 
foreach($values as $key => $value) { 
    $new_values[] = $value[0]; 
} 


print_r($new_values); 

樣本輸出:

Array 
(
    [0] => id 
    [1] => buydate 
    [2] => expire 
    [3] => planid 
    [4] => buyer 
) 

或者,你可以在你的iterator。考慮這個例子:

$new_values = array(); 
$iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($values)); 
foreach($iterator as $value) { 
    $new_values[] = $value; 
} 

它應該給你相同的輸出。