You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将多维数组输出为分组式键值对列表?

多维数组转分组式键值对列表解决方案

直接用递归遍历的方式就能解决分组混乱的问题,核心是跟踪当前的分组路径,遇到子数组就生成新分组,遇到字符串值就对应到当前分组下。

实现代码

function formatArrayToGroups($array, $prefix = '') {
    $output = '';
    $hasItems = false;
    
    foreach ($array as $key => $value) {
        $currentKey = $prefix ? "{$prefix}.{$key}" : $key;
        
        if (is_array($value)) {
            // 已有内容的话,先换行分隔分组
            if ($hasItems) {
                $output .= "\n\n";
            }
            // 递归处理子数组
            $subOutput = formatArrayToGroups($value, $currentKey);
            if (!empty(trim($subOutput))) {
                $output .= "[{$currentKey}]\n";
                $output .= $subOutput;
                $hasItems = true;
            }
        } else {
            // 当前分组还没输出标题的话,先加标题
            if (!$hasItems && $prefix) {
                $output .= "[{$prefix}]\n";
                $hasItems = true;
            }
            $output .= "{$key}={$value}\n";
        }
    }
    
    return rtrim($output);
}

// 你的输入数组
$inputArray = [
    "ACTION" => [
        "key1" => "Item 1",
        "key2" => "Item 2",
        "key3" => "Item 3",
        "key4" => "Item 4"
    ],
    "ADMIN" => [
        "key1" => "Item 1",
        "key2" => [
            "subkey1" => "Item 1",
            "subkey2" => "Item 2"
        ]
    ]
];

// 输出结果
echo formatArrayToGroups($inputArray);

输出结果

[ACTION]
key1=Item 1
key2=Item 2
key3=Item 3
key4=Item 4

[ADMIN]
key1=Item 1

[ADMIN.key2]
subkey1=Item 1
subkey2=Item 2

代码说明

  • 递归函数会自动跟踪当前的分组路径(比如ADMIN.key2),遇到子数组就生成对应的分组标题
  • 处理字符串值时,会自动归属到当前分组下,不会出现分组和内容不匹配的问题
  • 自动处理分组之间的空行分隔,保证输出格式符合预期

内容的提问来源于stack exchange,提问作者Armin Hierstetter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 09:52:49