毫无意义的运球


好吧这是另一个奇怪的一个自我,我想要谢谢 OIS 帮我在我的最后一个问题...其中涉及与这同一种时髦的阵列操纵...我研究了代码深入的而且我觉得它已经帮助了我成为更好的用递归阵列操纵功能。但是,我再次找到我自己的另一个艰难的位置

实际问题


我尝试写递归操纵功能,例如 .除了越来越深的每个阵元。 它将增加数到每个元件阵列有一定的深度。 最简单的方法,看看有什么我想要做的是查的"样品阵列"并"希望的结果阵"...我觉得我越来越好的理解这些种类的递归功能。但这个是给我的地狱,在此先感谢任何形式的帮助,你可以给我这个。请无视[深入的]结果的样本列我已经有一个功能,增加了这一点。再次感谢, --YouDontMeanMuch

样阵列


            array (
              52 => 
              array (
                'title' => 'Website Navigation',
                'path' => '',
                'type' => '115',
                'pid' => 0,
                'hasChildren' => 1,
                'children' => 
                array (
                  53 => 
                  array (
                    'title' => 'Home',
                    'path' => '',
                    'type' => '118',
                    'pid' => 52,
                    'hasChildren' => 0,
                  ),
                  54 => 
                  array (
                    'title' => 'Features',
                    'path' => 'features',
                    'type' => '374',
                    'pid' => 52,
                    'hasChildren' => 1,
                    'children' => 
                    array (
                      59 => 
                      array (
                        'title' => 'artistic',
                        'path' => 'features/artistic',
                        'type' => '374',
                        'pid' => 54,
                        'hasChildren' => 1,
                        'children' => 
                        array (
                          63 => 
                          array (
                            'title' => 'galleries',
                            'path' => 'features/artistic/galleries',
                            'type' => '374',
                            'pid' => 59,
                            'hasChildren' => 1,
                            'children' => 
                            array (
                              65 => 
                              array (
                                'title' => 'graphics',
                                'path' => 'features/artistic/galleries/graphics',
                                'type' => '118',
                                'pid' => 63,
                                'hasChildren' => 0,
                              ),
                              67 => 
                              array (
                                'title' => 'mixed medium',
                                'path' => 'features/artistic/galleries/mixed-medium',
                                'type' => '118',
                                'pid' => 63,
                                'hasChildren' => 0,
                              ),
                              64 => 
                              array (
                                'title' => 'overview',
                                'path' => 'features/artistic/galleries',
                                'type' => '118',
                                'pid' => 63,
                                'hasChildren' => 0,
                              ),
                              68 => 
                              array (
                                'title' => 'photography',
                                'path' => 'features/artistic/galleries/photography',
                                'type' => '118',
                                'pid' => 63,
                                'hasChildren' => 0,
                              ),
                              66 => 
                              array (
                                'title' => 'traditional',
                                'path' => 'features/artistic/galleries/traditional',
                                'type' => '118',
                                'pid' => 63,
                                'hasChildren' => 0,
                              ),
                            ),
                          ),
                          62 => 
                          array (
                            'title' => 'overview',
                            'path' => 'features/artistic',
                            'type' => '118',
                            'pid' => 59,
                            'hasChildren' => 0,
                          ),
                          69 => 
                          array (
                            'title' => 'tutorials',
                            'path' => 'features/artistic/tutorials',
                            'type' => '374',
                            'pid' => 59,
                            'hasChildren' => 1,
                            'children' => 
                            array (
                              71 => 
                              array (
                                'title' => 'by category',
                                'path' => 'features/artistic/tutorials/by-category/',
                                'type' => '118',
                                'pid' => 69,
                                'hasChildren' => 0,
                              ),
                              72 => 
                              array (
                                'title' => 'by date',
                                'path' => 'features/artistic/tutorials/by-date/',
                                'type' => '118',
                                'pid' => 69,
                                'hasChildren' => 0,
                              ),
                              70 => 
                              array (
                                'title' => 'overview',
                                'path' => 'features/artistic/tutorials',
                                'type' => '118',
                                'pid' => 69,
                                'hasChildren' => 0,
                              ),
                            ),
                          ),
                        ),
                      ),
                      58 => 
                      array (
                        'title' => 'overview',
                        'path' => 'features',
                        'type' => '118',
                        'pid' => 54,
                        'hasChildren' => 0,
                      ),
                      61 => 
                      array (
                        'title' => 'projects / labs',
                        'path' => 'features/projects-labs/',
                        'type' => '374',
                        'pid' => 54,
                        'hasChildren' => 0,
                      ),
                      60 => 
                      array (
                        'title' => 'web development',
                        'path' => 'features/web-development',
                        'type' => '374',
                        'pid' => 54,
                        'hasChildren' => 1,
                        'children' => 
                        array (
                          74 => 
                          array (
                            'title' => 'articles',
                            'path' => 'features/web-development/articles/',
                            'type' => '374',
                            'pid' => 60,
                            'hasChildren' => 0,
                          ),
                          73 => 
                          array (
                            'title' => 'overview',
                            'path' => 'features/web-development',
                            'type' => '118',
                            'pid' => 60,
                            'hasChildren' => 0,
                          ),
                          75 => 
                          array (
                            'title' => 'tutorials',
                            'path' => 'features/web-development/tutorials',
                            'type' => '374',
                            'pid' => 60,
                            'hasChildren' => 0,
                          ),
                        ),
                      ),
                    ),
                  ),
                  55 => 
                  array (
                    'title' => 'Activity',
                    'path' => 'activity',
                    'type' => '374',
                    'pid' => 52,
                    'hasChildren' => 0,
                  ),
                  56 => 
                  array (
                    'title' => 'Blog',
                    'path' => 'blog',
                    'type' => '374',
                    'pid' => 52,
                    'hasChildren' => 0,
                  ),
                  57 => 
                  array (
                    'title' => 'About',
                    'path' => 'about',
                    'type' => '374',
                    'pid' => 52,
                    'hasChildren' => 1,
                    'children' => 
                    array (
                      76 => 
                      array (
                        'title' => 'the author',
                        'path' => 'about/the-author',
                        'type' => '118',
                        'pid' => 57,
                        'hasChildren' => 0,
                      ),
                      77 => 
                      array (
                        'title' => 'the website',
                        'path' => 'about/the-website',
                        'type' => '118',
                        'pid' => 57,
                        'hasChildren' => 0,
                      ),
                    ),
                  ),
                ),
              ),
            )

预期的结果阵列
通知的[最]指数


            Array
            (
                [53] => Array
                    (
                        [title] => Home
                        [path] => 
                        [type] => 118
                        [pid] => 52
                        [mid] => 53
                        [hasChildren] => 0
                        [depth] => 1
                        [count] =>  1
                    )

                [54] => Array
                    (
                        [title] => Features
                        [path] => features
                        [type] => 374
                        [pid] => 52
                        [mid] => 54
                        [hasChildren] => 1
                        [depth] => 1
                        [count] =>  2
                        [children] => Array
                            (
                                [59] => Array
                                    (
                                        [title] => artistic
                                        [path] => features/artistic
                                        [type] => 374
                                        [pid] => 54
                                        [mid] => 59
                                        [hasChildren] => 1
                                        [depth] => 2
                                        [count] =>  1
                                        [children] => Array
                                            (
                                                [63] => Array
                                                    (
                                                        [title] => galleries
                                                        [path] => features/artistic/galleries
                                                        [type] => 374
                                                        [pid] => 59
                                                        [mid] => 63
                                                        [hasChildren] => 1
                                                        [depth] => 3
                                                        [count] =>  1
                                                        [children] => Array
                                                            (
                                                                [65] => Array
                                                                    (
                                                                        [title] => graphics
                                                                        [path] => features/artistic/galleries/graphics
                                                                        [type] => 118
                                                                        [pid] => 63
                                                                        [mid] => 65
                                                                        [hasChildren] => 0
                                                                        [depth] => 4
                                                                        [count] =>  1
                                                                    )

                                                                [67] => Array
                                                                    (
                                                                        [title] => mixed medium
                                                                        [path] => features/artistic/galleries/mixed-medium
                                                                        [type] => 118
                                                                        [pid] => 63
                                                                        [mid] => 67
                                                                        [hasChildren] => 0
                                                                        [depth] => 4
                                                                        [count] =>  2
                                                                    )

                                                                [64] => Array
                                                                    (
                                                                        [title] => overview
                                                                        [path] => features/artistic/galleries
                                                                        [type] => 118
                                                                        [pid] => 63
                                                                        [mid] => 64
                                                                        [hasChildren] => 0
                                                                        [depth] => 4
                                                                        [count] =>  3
                                                                    )

                                                                [68] => Array
                                                                    (
                                                                        [title] => photography
                                                                        [path] => features/artistic/galleries/photography
                                                                        [type] => 118
                                                                        [pid] => 63
                                                                        [mid] => 68
                                                                        [hasChildren] => 0
                                                                        [depth] => 4
                                                                        [count] =>  4
                                                                    )

                                                                [66] => Array
                                                                    (
                                                                        [title] => traditional
                                                                        [path] => features/artistic/galleries/traditional
                                                                        [type] => 118
                                                                        [pid] => 63
                                                                        [mid] => 66
                                                                        [hasChildren] => 0
                                                                        [depth] => 4
                                                                        [count] =>  5
                                                                    )

                                                            )

                                                    )

                                                [62] => Array
                                                    (
                                                        [title] => overview
                                                        [path] => features/artistic
                                                        [type] => 118
                                                        [pid] => 59
                                                        [mid] => 62
                                                        [hasChildren] => 0
                                                        [depth] => 3
                                                        [count] =>  2
                                                    )

                                                [69] => Array
                                                    (
                                                        [title] => tutorials
                                                        [path] => features/artistic/tutorials
                                                        [type] => 374
                                                        [pid] => 59
                                                        [mid] => 69
                                                        [hasChildren] => 1
                                                        [depth] => 3
                                                        [count] =>  3
                                                        [children] => Array
                                                            (
                                                                [71] => Array
                                                                    (
                                                                        [title] => by category
                                                                        [path] => features/artistic/tutorials/by-category/
                                                                        [type] => 118
                                                                        [pid] => 69
                                                                        [mid] => 71
                                                                        [hasChildren] => 0
                                                                        [depth] => 4
                                                                        [count] =>  1
                                                                    )

                                                                [72] => Array
                                                                    (
                                                                        [title] => by date
                                                                        [path] => features/artistic/tutorials/by-date/
                                                                        [type] => 118
                                                                        [pid] => 69
                                                                        [mid] => 72
                                                                        [hasChildren] => 0
                                                                        [depth] => 4
                                                                        [count] =>  2
                                                                    )

                                                                [70] => Array
                                                                    (
                                                                        [title] => overview
                                                                        [path] => features/artistic/tutorials
                                                                        [type] => 118
                                                                        [pid] => 69
                                                                        [mid] => 70
                                                                        [hasChildren] => 0
                                                                        [depth] => 4
                                                                        [count] =>  3
                                                                    )

                                                            )

                                                    )

                                            )

                                    )

                                [58] => Array
                                    (
                                        [title] => overview
                                        [path] => features
                                        [type] => 118
                                        [pid] => 54
                                        [mid] => 58
                                        [hasChildren] => 0
                                        [depth] => 2
                                        [count] =>  2
                                    )

                                [61] => Array
                                    (
                                        [title] => projects / labs
                                        [path] => features/projects-labs/
                                        [type] => 374
                                        [pid] => 54
                                        [mid] => 61
                                        [hasChildren] => 0
                                        [depth] => 2
                                        [count] =>  3
                                    )

                                [60] => Array
                                    (
                                        [title] => web development
                                        [path] => features/web-development
                                        [type] => 374
                                        [pid] => 54
                                        [mid] => 60
                                        [hasChildren] => 1
                                        [depth] => 2
                                        [count] =>  4
                                        [children] => Array
                                            (
                                                [74] => Array
                                                    (
                                                        [title] => articles
                                                        [path] => features/web-development/articles/
                                                        [type] => 374
                                                        [pid] => 60
                                                        [mid] => 74
                                                        [hasChildren] => 0
                                                        [depth] => 3
                                                        [count] =>  1
                                                    )

                                                [73] => Array
                                                    (
                                                        [title] => overview
                                                        [path] => features/web-development
                                                        [type] => 118
                                                        [pid] => 60
                                                        [mid] => 73
                                                        [hasChildren] => 0
                                                        [depth] => 3
                                                        [count] =>  2
                                                    )

                                                [75] => Array
                                                    (
                                                        [title] => tutorials
                                                        [path] => features/web-development/tutorials
                                                        [type] => 374
                                                        [pid] => 60
                                                        [mid] => 75
                                                        [hasChildren] => 0
                                                        [depth] => 3
                                                        [count] =>  3
                                                    )
有帮助吗?

解决方案

我想这应该工作...我无法测试您的示例阵列上,但它似乎更小的阵列我做了工作。

编辑:现在你已经删除了您例如数组的“深度”键更改功能。现在它发现自己的深度。我还添加我的测试代码和输出:

<?php

function array_depth_count(&$array, $count=array(), $depth=1) {
    foreach ($array as &$value) {
        if (is_array($value)) {
            $value['count'] = ++$count[$depth];
            array_depth_count($value, $count, $depth + 1);
        }
    }
}

$a = array(array(array(array(0),array(0),array(),array()),0,array()));

echo "Before\n";
print_r($a);
array_depth_count($a);
echo "\n\nAfter\n";
print_r($a);

?>

输出:

Before
Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [0] => Array
                        (
                            [0] => 0
                        )

                    [1] => Array
                        (
                            [0] => 0
                        )

                    [2] => Array
                        (
                        )

                    [3] => Array
                        (
                        )

                )

            [1] => 0
            [2] => Array
                (
                )

        )

)

After
Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [0] => Array
                        (
                            [0] => 0
                            [count] => 1
                        )

                    [1] => Array
                        (
                            [0] => 0
                            [count] => 2
                        )

                    [2] => Array
                        (
                            [count] => 3
                        )

                    [3] => Array
                        (
                            [count] => 4
                        )

                    [count] => 1
                )

            [1] => 0
            [2] => Array
                (
                    [count] => 2
                )

            [count] => 1
        )

)

其他提示

我真的很想说这将工作

function deep(&$layer)
{
    $count = 1;
    $keys = array_keys($layer);
    foreach($keys as $key)
        if(is_array($layer[$key]))
            deep($layer[$key]);
    $layer['depth'] = $count++;
}

(测试和用于箱正常工作) (误解的问题,我的另一种情况下,这应该是你想要的)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top