PHP使用数组值将数组插入多维数组

PHP使用数组值将数组插入多维数组,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我得到了这样的数组,它基于数据库中的数据,表示cms的单个页面: $page = Array ( [title] => mein produkt [NavID] => 200 [parents] => Array ( [0] => 0 [1]

我得到了这样的数组,它基于数据库中的数据,表示cms的单个页面:

    $page =

            Array
        (
            [title] => mein produkt
            [NavID] => 200
            [parents] => Array
                (
                    [0] => 0
                    [1] => 3
                    [2] => 200
                )

        )
我需要把它放到另一个多维数组中,像这样表示站点地图:

$map =

    Array
    (
        [NavID] => 0
        [0] => Array
            (
                [childs] => Array
                    (
                        [1] => Array
                            (
                                [title] => home
                                [NavID] => 1
                            )

                        [2] => Array
                            (
                                [title] => impressum
                                [NavID] => 2
                                [childs] => Array
                                    (
                                        [100] => Array
                                            (
                                                [title] => startseite
                                                [NavID] => 100
                                                [parents] => Array
                                                    (
                                                        [0] => 0
                                                        [1] => 2
                                                        [2] => 100
                                                    )

                                            )

                                    )

                            )

                        [3] => Array
                            (
                                [title] => produkte
                                [NavID] => 3
                            )

                    )

            )

    )
如您所见,我将数组的结构作为
parents
上的数组值

所以我要用手做的是这样:

$map[0]['childs'][3]['childs'][200] = $page;
放置如何使用数组值选择多维数组
$page['parents']


谢谢您的帮助。

您可以直接使用
$page['parents'][KEY]
作为键,以这种方式访问
$map
值:

$map[$page['parents'][0]]['childs'][$page['parents'][1]]['childs'][$page['parents'][2]] = $page;
随着树的生长,我真的建议用一个直接变量来缩短它:

$par = $page['parents'];
$map[$par[0]]['childs'][$par[1]]['childs'][$par[2]] = $page;
要动态转到正确的节点,只需使用引用在父节点上循环:

$tmp = &$map;
$first = true;
foreach ($page['parents'] as $parent) {
  if ($first) { // Quick workaround to skip the first node without 'childs' key
    $tmp = &$tmp[$parent];
    $first = false;
    continue;
  }
  $tmp = &$tmp['childs'][$parent];
}
$tmp = $page;

用于访问数组间键。请阅读以下内容:谢谢您的提示。但我现在不知道页面有多深,所以可能有六个父元素。我知道我可以使用数组计数来确定我得到了多少。但话说回来,我怎么能像你的答案那样把它放在一行呢?我需要的是以编程的方式创建这个指针“$map[$par[0]]['childs'][$par[1]]]['childs'][$par[2]]”。@da.eXecutoR更新了我的答案,以使用你想要的引用/指针。我必须做一个小的修改才能让它工作:$tmp=&$map$第一个=正确;foreach($page['parents']作为$parent){if($first){//跳过没有childs的第一个节点的快速解决方法$first=false;$tmp=&$tmp[$parent];continue;}$tmp=&$tmp['childs'][$parent];}$tmp=$page;非常感谢你,伙计!让我一天都很愉快