我需要动态地计算我的多维数组键,以便在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来计算。
如何在数组中动态创建键?
谢谢
发布于 2017-07-06 12:36:27
希望这是你想要的。我创建了一个带有键的数组。然后遍历该数组创建多维数组。
$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;
}发布于 2017-07-06 12:37:09
使用array_walk_recursive函数
<?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);在这里查看:https://3v4l.org/HmlYD
https://stackoverflow.com/questions/44948136
复制相似问题