PHP : 内爆并获取多维关联数组的键
PHP : Implode and get the keys of a multidimensional associative array
我有个小问题。我想改造这个:
$array['page']['article']['header'] = "Header";
$array['page']['article']['body'] = "Body";
$array['page']['article']['footer'] = "Footer";
$array['page']['news']['header'] = "Header";
$array['page']['news']['body'] = "Body";
$array['page']['news']['footer'] = "Footer";
进入这个:
$array['page.article.header'] = "Header";
$array['page.article.body'] = "Body";
$array['page.article.footer'] = "Footer";
$array['page.news.header'] = "Header";
$array['page.news.body'] = "Body";
$array['page.news.footer'] = "Footer";
维数是可变的,可以是 0 或 10 的倍数。我不知道我是否使用了正确的搜索词,但 Google 到目前为止帮不了我。
所以,如果有人能为我提供解决方案。
谢谢
您可以遍历手头的数组。现在,如果当前值是一个数组,递归调用该数组到函数调用。在每个函数调用中,return 一个包含键值对的数组。当您从 sub-array 获得输出时,将当前键值附加到该 sub-array returned 输出的所有键。
片段:
<?php
function rearrange($array){
$output = [];
foreach($array as $key => $val){
if(is_array($val)){
$out = rearrange($val);
foreach($out as $sub_key => $sub_val){
$output[$key . "." . $sub_key] = $sub_val;
}
}else{
$output[$key] = $val;
}
}
return $output;
}
print_r(rearrange($array));
我有个小问题。我想改造这个:
$array['page']['article']['header'] = "Header";
$array['page']['article']['body'] = "Body";
$array['page']['article']['footer'] = "Footer";
$array['page']['news']['header'] = "Header";
$array['page']['news']['body'] = "Body";
$array['page']['news']['footer'] = "Footer";
进入这个:
$array['page.article.header'] = "Header";
$array['page.article.body'] = "Body";
$array['page.article.footer'] = "Footer";
$array['page.news.header'] = "Header";
$array['page.news.body'] = "Body";
$array['page.news.footer'] = "Footer";
维数是可变的,可以是 0 或 10 的倍数。我不知道我是否使用了正确的搜索词,但 Google 到目前为止帮不了我。
所以,如果有人能为我提供解决方案。 谢谢
您可以遍历手头的数组。现在,如果当前值是一个数组,递归调用该数组到函数调用。在每个函数调用中,return 一个包含键值对的数组。当您从 sub-array 获得输出时,将当前键值附加到该 sub-array returned 输出的所有键。
片段:
<?php
function rearrange($array){
$output = [];
foreach($array as $key => $val){
if(is_array($val)){
$out = rearrange($val);
foreach($out as $sub_key => $sub_val){
$output[$key . "." . $sub_key] = $sub_val;
}
}else{
$output[$key] = $val;
}
}
return $output;
}
print_r(rearrange($array));