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

PHP嵌套数组按键访问打印报错及表格展示需求

PHP嵌套数组按键访问问题及表格生成解决方案

问题需求

现有一段PHP代码可打印嵌套数组的Incs子数组值,但尝试用echo $subsubsubvalue[$subsubsubkey];按键访问元素时出现错误,需实现正确的按键访问方式,同时将数组数据以「时间 | 球员 | 事件」的表格形式展示。

原有可运行代码

foreach ($summary as $key => $value) 
{
    if ($key === "Incs") {
        foreach ($value as $subkey => $subvalue) {
            foreach ($subvalue as $subsubkey => $subsubvalue) {
                echo "$subsubkey:\n";
                foreach ($subsubvalue as $subsubsubkey => $subsubsubvalue) {
                    echo $subsubsubvalue;
                }
            }
        }
    } else {
        echo "$key: $value\n";
    }
}

报错的尝试代码

foreach ($summary as $key => $value) 
{
    if ($key === "Incs") {
        foreach ($value as $subkey => $subvalue) {
            foreach ($subvalue as $subsubkey => $subsubvalue) {
                echo "$subsubkey:\n";
                foreach ($subsubvalue as $subsubsubkey => $subsubsubvalue) {
                    echo  $subsubsubvalue[$subsubsubkey];
                }
            }
        }
    } else {
        echo "$key: $value\n";
    }
}

目标数组结构

array(8) { 
    ["Eid"]=> string(6) "891551" 
    ["Tr1"]=> string(1) "2" 
    ["Tr2"]=> string(1) "0" 
    ["Trh1"]=> string(1) "2" 
    ["Trh2"]=> string(1) "0" 
    ["Tr1OR"]=> string(1) "0" 
    ["Tr2OR"]=> string(1) "0" 
    ["Incs"]=> array(1) { 
        [1]=> array(2) { 
            [0]=> array(12) { 
                ["Min"]=> int(24) 
                ["Nm"]=> int(1) 
                ["Aid"]=> string(5) "57092" 
                ["ID"]=> string(5) "57092" 
                ["Fn"]=> string(7) "Si-heon" 
                ["Ln"]=> string(3) "Lee" 
                ["Pnum"]=> int(0) 
                ["Pn"]=> string(11) "Si-Heon Lee" 
                ["PnumO"]=> int(0) 
                ["IT"]=> int(36) 
                ["Sc"]=> array(2) { [0]=> int(1) [1]=> int(0) } 
                ["Sor"]=> int(3) 
            } 
            [1]=> array(9) { 
                ["Min"]=> int(32) 
                ["Nm"]=> int(1) 
                ["ID"]=> string(7) "1067481" 
                ["Pnum"]=> int(0) 
                ["Pn"]=> string(13) "Dong-Ryul Lee" 
                ["PnumO"]=> int(0) 
                ["IT"]=> int(36) 
                ["Sc"]=> array(2) { [0]=> int(2) [1]=> int(0) } 
                ["Sor"]=> int(5) 
            } 
        } 
    } 
}

期望表格样式

时间球员事件
36'DebryneGoal
45'MartialYellow card

解决方案

1. 修复按键访问错误

报错原因:最内层循环中,$subsubsubvalue已经是数组的元素值(比如Min对应的24、Pn对应的球员名),而非数组,此时用$subsubsubvalue[$subsubsubkey]相当于用标量值作为数组访问,必然触发错误。

正确的按键访问方式是直接操作$subsubvalue数组,根据键名获取对应值:

foreach ($summary as $key => $value) 
{
    if ($key === "Incs") {
        foreach ($value as $subkey => $subvalue) {
            foreach ($subvalue as $subsubkey => $subsubvalue) {
                echo "事件详情:\n";
                // 直接按键名访问元素
                echo "时间: {$subsubvalue['Min']}'\n";
                echo "球员: {$subsubvalue['Pn']}\n";
                // 根据Sc和IT字段映射事件类型,示例逻辑
                $event = match(true) {
                    $subsubvalue['IT'] === 36 && $subsubvalue['Sc'][0] === 1 => "Goal",
                    $subsubvalue['IT'] === 36 && $subsubvalue['Sc'][0] === 2 => "Assist",
                    default => "Unknown Event"
                };
                echo "事件: $event\n\n";
            }
        }
    } else {
        echo "$key: $value\n";
    }
}

2. 生成目标表格

结合数组结构,提取对应字段并生成Markdown表格:

// 初始化表格头部
echo "| 时间 | 球员 | 事件 |\n";
echo "|------|------|------|\n";

foreach ($summary['Incs'] as $subvalue) {
    foreach ($subvalue as $eventItem) {
        // 处理时间格式
        $time = "{$eventItem['Min']}'";
        // 获取球员名
        $player = $eventItem['Pn'];
        // 映射事件类型(根据实际业务逻辑调整)
        $event = match(true) {
            $eventItem['IT'] === 36 && $eventItem['Sc'][0] === 1 => "Goal",
            $eventItem['IT'] === 36 && $eventItem['Sc'][0] === 2 => "Assist",
            default => "Unknown"
        };
        // 输出表格行
        echo "| $time | $player | $event |\n";
    }
}

运行上述代码后,会输出符合要求的表格:

时间球员事件
24'Si-Heon LeeGoal
32'Dong-Ryul LeeAssist

内容的提问来源于stack exchange,提问作者Eng Sibo Dams

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 05:57:00