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));

演示: https://3v4l.org/40hjK