Php 输出多维数组的数组键

Php 输出多维数组的数组键,php,arrays,key,Php,Arrays,Key,我正在尝试编写一个函数,它将多维数组作为输入并输出一个多行键字符串,如下所示 ['key']['subkey'] ['key']['another_subkey'] ['key']['another_subkey']['subkey_under_subkey'] ['key']['yet_another_subkey'] ['another_key']['etc'] 这是我的尝试。当你达到第二级时,它就有问题了 function get_array_keys_as_string($array)

我正在尝试编写一个函数,它将多维数组作为输入并输出一个多行键字符串,如下所示

['key']['subkey']
['key']['another_subkey']
['key']['another_subkey']['subkey_under_subkey']
['key']['yet_another_subkey']
['another_key']['etc']
这是我的尝试。当你达到第二级时,它就有问题了

function get_array_keys_as_string($array){
    $output = "";
    foreach($array as $k => $v){
        if(is_array($v)){
            $string = get_array_keys_as_string($v);
            $prepend = "['$k']";
            $string = $prepend.str_replace("\n","\n".$prepend, $string);
            $output .= $string;
        }
        else{
            $output .= "['$k']\n";
        }
    }
    return $output;
}
我知道我需要一个递归函数,但到目前为止我的尝试还不够。

试试这个

function arrayMultiKeys($array,$depth = 0){
    foreach($array as $k=>$v){
        echo "['".$k."']";
        if(is_array($v)){
            arrayMultiKeys($v,$depth + 1);
        }
        if($depth == 0 ){
            echo "<br>";
        }
    }
}
函数数组多键($array,$depth=0){
foreach($k=>v的数组){
回音“[””、$k.“]”;
if(is_数组($v)){
阵列多键($v,$depth+1);
}
如果($depth==0){
回声“
”; } } }
由于您没有提供示例数组(仅提供结果),因此不确定您希望如何输出,但这里有一个基于以下数组的示例

$array = array(
    "key" => array(
        "subkey" => 1, 
        "another_subkey" => array("2", "subkey_under_subkey" => 3), 
        "yet_another_subkey" => 4
    ),
    "another_key" => array("etc"), 
    "last_key" => 0
); 
使用以下函数

function recursive_keys($arr, $history = NULL)
{
    foreach ($arr as $key => $value)
    {
        if (is_array($value))
            recursive_keys($value, $history."['".$key."']");
        else
            echo $history."['".$key."']\n";
    }
}
递归键($array)
的输出为

['key']['subkey']
['key']['another_subkey']['0']
['key']['another_subkey']['subkey_under_subkey']
['key']['yet_another_subkey']
['another_key']['0']
['last_key']

要获得您要求的确切输出,请使用以下命令:

$arr = array(
    "key" => array(
        "subkey" => 1,
        "another_subkey" => array(
            "subkey_under_subkey" => 1
        ),
        "yet_another_subkey" => 1
    ),
    "another_key" => array(
        "etc" => 1
    )
);

function print_keys_recursive($array, $path = false) {
    foreach($array as $key=>$value) {       
        if(!is_array($value)) {
            echo $path."[".$key."]<br/>";
        } else {
            if($path) {
                echo $path."[".$key."]<br/>";
            }
            print_keys_recursive($value, $path."[".$key."]");
        }
    }
    return;
}
print_keys_recursive($arr);

你能给我们提供所需的输出吗?以上是字符串形式的所需输出。请说明你的尝试有哪些不足。我们不是免费的编码服务,但我们会帮助您纠正错误,让您从中吸取教训。我知道它也会输出值,但如果您只需要检查数组以查看其结构,为什么不只打印它呢?此函数在第二个级别有一个问题,与我的类似,尽管它在方法上看起来更简洁。同一第一级密钥下的第二级密钥作为第三级密钥输出
[key][subkey]
[key][another_subkey]
[key][another_subkey][subkey_under_subkey]
[key][yet_another_subkey]
[another_key][etc]