PHP动态创建多维数组键

PHP动态创建多维数组键,php,arrays,multidimensional-array,key,Php,Arrays,Multidimensional Array,Key,我需要在Elasticsearch中动态计算多维数组键以进行聚合 我有以下几点 $aggs['aggs']['name'] 但是aggs和name需要在循环中填充。例如: $aggs['aggs']['name']['aggs'] = $glue; // looping $aggs['aggs']['name']['aggs']['name']['aggs'] = $glue; // looping $aggs['aggs']['name']['aggs']['name']['

我需要在Elasticsearch中动态计算多维数组键以进行聚合

我有以下几点


$aggs['aggs']['name']

但是aggs和name需要在循环中填充。例如:

 $aggs['aggs']['name']['aggs']  = $glue;

// looping

$aggs['aggs']['name']['aggs']['name']['aggs'] = $glue;

// looping

 $aggs['aggs']['name']['aggs']['name']['aggs']['name']['aggs']  = $glue;

// etc
数组键需要使用键
aggs
name

如何在数组中动态创建键


谢谢,希望这就是你想要的。我已经创建了一个带有键的数组。然后遍历该数组以创建多维数组

$keys = array("aggs","name","aggs","name","aggs");
$aggs = array();

$aggs = add_keys_dynamic($aggs,$keys,"test");
echo "<pre>";
print_r($aggs);

function add_keys_dynamic($main_array, $keys, $value){    
    $tmp_array = &$main_array;
    while( count($keys) > 0 ){        
        $k = array_shift($keys);        
        if(!is_array($tmp_array)){
            $tmp_array = array();
        }
        $tmp_array = &$tmp_array[$k];
    }
    $tmp_array = $value;
    return $main_array;
}
$keys=array(“aggs”、“name”、“aggs”、“name”、“aggs”);
$aggs=array();
$aggs=添加密钥动态($aggs,$keys,“测试”);
回声“;
印刷费($aggs);
函数add_keys_dynamic($main_数组,$keys,$value){
$tmp_数组=&$main_数组;
而(计数($keys)>0{
$k=数组移位($keys);
如果(!is_数组($tmp_数组)){
$tmp_array=array();
}
$tmp_数组=&$tmp_数组[$k];
}
$tmp_数组=$value;
返回$main_数组;
}

使用
array\u walk\u recursive
函数


1次迭代只添加
aggs
?从2号开始添加
[name][aggs]
?有一个片段吗?因为我不能添加括号,所以需要填充它们
<?php
$aggs['aggs']['name'] = "name";

function addEnd(&$item, $key)
{
    if(is_array($item)){
        return;
    }elseif($key=='aggs'){
        $item=['name'=> ['aggs' => $item]];
    }else{
        $item=['aggs' => $item];
    }
}

for($i=0; $i<5; $i++){ // your loop
    array_walk_recursive($aggs, 'addEnd');
}

var_dump($aggs);