Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在未知多维数组中查找并添加到关联数组_Php_Search_Multidimensional Array_Key_Associative Array - Fatal编程技术网

Php 在未知多维数组中查找并添加到关联数组

Php 在未知多维数组中查找并添加到关联数组,php,search,multidimensional-array,key,associative-array,Php,Search,Multidimensional Array,Key,Associative Array,我试图通过向数组中添加数组来创建一个自填充树。我遇到的问题是在数组中查找关联键,然后向其中添加新内容(新数组) 我如何解决这个问题 这可以递归地完成。您可以在主数组中搜索键,并将该值与要追加/插入的数据合并 下面我创建了两个函数来实现这一点 /**追加或创建一个数组,用$key值搜索索引。若$key设置为null,则使用数字索引将其追加到数组中。 *@param array$masterArray要附加到的数组 *@param混合$data *@param null$key如果未设置,将附加到主

我试图通过向数组中添加数组来创建一个自填充树。我遇到的问题是在数组中查找关联键,然后向其中添加新内容(新数组)


我如何解决这个问题

这可以递归地完成。您可以在主数组中搜索键,并将该值与要追加/插入的数据合并

下面我创建了两个函数来实现这一点

/**追加或创建一个数组,用$key值搜索索引。若$key设置为null,则使用数字索引将其追加到数组中。
*@param array$masterArray要附加到的数组
*@param混合$data
*@param null$key如果未设置,将附加到主数组
*/
函数附加($key、$data和$masterArray){
如果($key==null){
$masterArray[]=$data;
}else if(!\u appendHelper($key、$data、$masterArray)){
$masterArray[$key]=$data;
}
}
/**递归搜索/合并数组的Helper函数*/
函数_appendHelper($key、$data和$masterArray){
foreach($k=>&$v的主数组){
如果($k==$key){
$v=数组\合并($v,is\数组($data)?$data:[$data]);
返回true;
}elseif(is_数组($v)){
_appendHelper($key,$data,$v);
}
}
return false;//密钥不存在
}
$masterArray=['foo'=>['bar'=>['ram'=>['ewe'=>[]]],['man'=>['chu'=>[]];
追加('foo',[''测试1'=>[1,1,1]],$masterArray);
打印(主阵列);
追加('new_key',[''__TEST2'=>[2,2,2]],$masterArray);
打印(主阵列);
追加(null,[''测试3'=>[3,3,3]],$masterArray);
打印(主阵列);

欢迎使用堆栈溢出!提问前请先阅读和“”。你能为你迄今为止所做的尝试添加一些代码吗?你到底有什么问题?你试过什么?不幸的是,我不知道钥匙的位置或深度。我需要一种搜索的方法,然后一旦找到,添加新的东西到它。钥匙可以存在于不同的级别吗?例如:
['foo'=>['foo'=>['foo'=>[1,2,…]]]]
把它想象成:
['foo'=>['bar'=>['ram'=>['ewe'=>[]
但它可以不确定地继续。我需要能够随时访问这些密钥中的任何一个并添加到它们中。@IanTelke我已经更新了我的代码,以适应您最后的评论。我相信这就是您正在寻找的。