数组删除父数字数组

时间:2014-04-20 18:21:23

标签: php arrays multidimensional-array

如何制作此数组:

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"
}

是否有辅助功能或其他可以提供帮助的功能?

2 个答案:

答案 0 :(得分:7)

如果事先知道密钥:

如果您使用的是PHP 5.5+,则可以使用array_column()使用plz密钥提取所有子阵列:

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

如果你使用旧版本的PHP,可以使用array_map()来实现同样的效果:

$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 class:

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

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

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

答案 1 :(得分:2)

另一种选择:

$array = call_user_func_array('array_merge', array_map('array_values', $array));
  1. 使用array_values()
  2. 从子数组中获取数字索引数组
  3. 使用array_merge()
  4. 合并这些数组