从多维数组中获取所有值作为平面索引数组[重复]

问题描述 投票:0回答:6

我有这个数组:

  array(3) {
  [0]=>
  array(3) {
    [0]=>
    array(1) {
      [0]=>
      string(2) "14"
    }
    [1]=>
    string(2) "12"
    [2]=>
    string(2) "13"
  }
  [1]=>
  string(2) "10"
  [2]=>
  string(2) "11"
}

是否有一些 PHP 函数可以将所有值输出到一个字符串中。像这样:

    array(5){
    [0]=>
    string(2) "14"

    [1]=>
    string(2) "12"

    [2]=>
    string(2) "13"

     [3]=>
    string(2) "11"
}
php arrays recursion multidimensional-array flatten
6个回答
2
投票

您可以使用array_walk_recursive

$output = array();
array_walk_recursive($inputArray,
   create_function('$val, $key, $obj', 'array_push($obj, $val);'), &output)

1
投票
$res = array();
array_walk_recursive($ar, function($v, $k, $res) {
  $res[] = $v;
}, &$res);

1
投票

另一种选择是利用一些 SPL 的迭代器12

iterator_to_array()
3 函数,以节省匿名回调的工作。

$leaves = iterator_to_array(
    new RecursiveIteratorIterator(
        new RecursiveArrayIterator($array)
    ),
    FALSE
);

参考资料

  1. RecursiveArrayIterator
    http://php.net/recursivearrayiterator
  2. RecursiveIteratorIterator
    http://php.net/recursiveiteratoriterator
  3. iterator_to_array()
    http://php.net/iterator_to_array

0
投票
function flatten_array(array $a) 
{
   array_walk_recursive($a, function($v) use(&$r) { $r[] = $v; });
   return $r;
}

-1
投票

不,没有。你必须自己写。


-1
投票

你不会得到你想要的,但你可以看到array_walk_recursive

© www.soinside.com 2019 - 2024. All rights reserved.