2014-05-07 44 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; 
} 

它应该给你相同的输出。