PHP使用数组值将数组插入多维数组
我得到了这样的数组,它基于数据库中的数据,表示cms的单个页面:PHP使用数组值将数组插入多维数组,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我得到了这样的数组,它基于数据库中的数据,表示cms的单个页面: $page = Array ( [title] => mein produkt [NavID] => 200 [parents] => Array ( [0] => 0 [1]
$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;非常感谢你,伙计!让我一天都很愉快