首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP动态创建多维数组键

问PHP动态创建多维数组键
EN

Stack Overflow用户
提问于 2017-07-06 11:53:02
回答 2查看 2.9K关注 0票数 3

我需要动态地计算我的多维数组键,以便在Elasticsearch中进行扩展。

我有以下几点

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

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

代码语言:javascript
复制
 $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来计算。

如何在数组中动态创建键?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-06 12:36:27

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

代码语言:javascript
复制
$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;
}

示例

票数 10
EN

Stack Overflow用户

发布于 2017-07-06 12:37:09

使用array_walk_recursive函数

代码语言:javascript
复制
<?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

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44948136

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档