2014-04-20 56 views
-1

我怎样才能使此阵:阵列删除父数值数组

array(2) { 
    [0]=> 
    array(1) { 
    ["plz"]=> 
    string(4) "4460" 
    } 
    [1]=> 
    array(1) { 
    ["plz"]=> 
    string(4) "4000" 
    } 
} 

变为像这样只需要在一个数组中的键的值不事关:

array(2) { 
    [0]=> 
    string(4) "4460" 
    [1]=> 
    string(4) "4000" 
} 

有帮助功能还是可以帮助的?

+0

可能重复的那些阵列[是否有一个函数从在PHP阵列提取“列”?](http://stackoverflow.com/questions/1494953/is-there -a-功能到提取物的一列从 - 一个阵列功能于PHP) –

回答

7

如果关键是事先知道的:

如果你使用PHP 5.5 +,你可以使用array_column()plz键提取所有子阵:

$result = array_column($array, 'plz'); 

同样可以使用array_map()如果您使用的是旧版本的PHP:

$result = array_map(function($sub) { return $sub['plz']; }, $array); 

如果关键是事先不知道:

使用array_walk_recursive()

$result = array(); 
array_walk_recursive($array, function($v) use (&$result) { $result[] = $v; }); 

注意,它的工作原理递归,所以如果你有更复杂的阵列,它还是会正常工作。

或者,你可以使用RecursiveIteratorIterator类:

$result = array(); 
$iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($array)); 

foreach($iterator as $value) { 
    $result[] = $value; 
} 

有关详细信息,请参阅此问题:How does RecursiveIteratorIterator work in PHP?

2

另一种选择:

$array = call_user_func_array('array_merge', array_map('array_values', $array)); 
  1. 获取数字索引从阵列使用的子阵列使用array_values()
  2. 合并使用的array_merge()