PHP动态创建多维数组键
我需要在Elasticsearch中动态计算多维数组键以进行聚合 我有以下几点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']['
$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);