Php 遍历数组,可以具有多个深度

Php 遍历数组,可以具有多个深度,php,Php,我有以下数组模式 Array ( [0] => Array ( [label] => 2011 [subtable] => Array ( [0] => Array ( [label] => 05 [subtable] => Arr

我有以下数组模式

Array
(
[0] => Array
    (
        [label] => 2011
        [subtable] => Array
            (
                [0] => Array
                    (
                        [label] => 05
                        [subtable] => Array
                            (
                                [0] => Array
                                    (
                                        [label] => /hello-world.html
                                        [url] => http://example.com/2011/05/hello-world.html
                                    )

                                [1] => Array
                                    (
                                        [label] => /test-test-test.html
                                        [url] => http://example.com/2011/05/test-test-test.html
                                    )

                            )

                    )

                [1] => Array
                    (
                        [label] => 04
                        [subtable] => Array
                            (
                                [0] => Array
                                    (
                                        [label] => /i-have-some-problem-with-gfc-updates.html
                                        [url] => http://example.com/2011/04/i-have-some-problem-with-gfc-updates.html
                                    )

                                [1] => Array
                                    (
                                        [label] => /testing-for-google-frineds-update.html
                                        [url] => http://example.com/2011/04/testing-for-google-frineds-update.html
                                    )

                            )

                    )

                [2] => Array
                    (
                        [label] => /05
                        [url] => http://example.com/2011/05
                    )

                [3] => Array
                    (
                        [label] => /04
                        [url] => http://example.com/2011/04
                    )

            )

    )

[1] => Array
    (
        [label] => /index
        [url] => http://example.com/
    )
)
我想将标签和url放入另一个数组中,如

array(
    [0] = array([label] => a [url] => http://example.com/a/)
    [1] = array([label] => b [url] => http://example.com/b/)
)
如何使用递归或将其传递给函数来实现它?

您可以使用:

$parsed_array = array();
function parse_array($item, $key) {
  global $parsed_array;
  if(is_array($item) && isset($item['url'])) {
    $parsed_array[] = $item;
  }
}

array_walk_recursive($your_array, 'parse_array');
或者您可以使用递归函数实现它:

function parse_array($array) {
  $result = array();
  foreach($array as $item) {
    if(isset($item['subtable'])) {
      $result = array_merge($result, parse_array($item['subtable']));
    }else{
      $result[] = $item;
    }
  }
  return $result;
}

$parsed_array = parse_array($your_array);

@Emil:parse_array递归函数返回什么?parse_array递归函数不起作用,它返回的是相同的内容它仍然返回相同的数组:我还错误地递归了$array['subtable',而不是$item['subtable']。也改变了这一点,并验证了它确实有效。