如何在 php 中打印嵌套数组 [已关闭]

how to print Nested Array in php [closed]

提问人:Eng Sibo Dams 提问时间:4/12/2023 最后编辑:Eng Sibo Dams 更新时间:4/12/2023 访问量:54

问:


这个问题是由一个错别字或一个无法再重现的问题引起的。虽然类似的问题可能在这里成为主题,但这个问题的解决方式不太可能帮助未来的读者。

8个月前关闭。

我需要有关此代码块的帮助

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";
    }
}

这是通过打印子数组的值来工作的,但我想使用键来访问每个值,这似乎会产生错误。有没有可能实现这一目标?echo $subsubsubvalue;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[$subsubsubkey];
                }
            }
        }
    } else {
        echo "$key: $value\n";
    }
}

这是我正在尝试打印的数组

数组(8) { [“Eid”]=> 字符串(6) “891551” [“Tr1”]=> 字符串(1) “2” [“Tr2”]=> 字符串(1) “0” [“Trh1”]=> 字符串(1) “2” [“Trh2”]=> 字符串(1) “0” [“Tr1OR”]=> 字符串(1) “0” [“Tr2OR”]=> 字符串(1) “0” [“Incs”]= 字符串(1) “0” [“Incs”]= 字符串(1) “0” [“Trh2”]= 字符串(1) “0” [“Tr2OR”]>= 字符串(1) “0” [“Incs”]= 字符串(1) “0” [“Tr1OR”]= 字符串(1) “0” [“Tr2OR”]= 字符串(1) “0” [“Incs”]= 数组(1) { [1]=> 数组(2) { [0]=> 数组(12) { [“最小值”]=> 整数(24) [“纳米”]=> 整数(1) [“辅助”]=> 字符串(5) “57092” [“ID”]=> 字符串(5) “57092” [“Fn”]=> 字符串(7) “Si-heon” [“Ln”]=> 字符串(3) “李” [“Pnum”]=> 整数(0) [“Pn”]=> 字符串(11) “李时宪” [“PnumO”]=> 整数(0) [“IT”]=> 整数(36) [“Sc”]=> 数组(2) { [0]=> 整数(1) [1]=> 整数(0) } [“Sor”]=> 整数(3) } [1]=> 数组(2) { [0]= 整数(0) } [“Sor”]= 整数(3) } [1]= 数组(2) { [0]= 整数(1) [1]= 整数(0) } [“Sor”]= 整数(3) } [1]= 数组(2) { [0]= 整数(1) [1]= 整数(0) } [“Sor”]= 整数(3) } [1]= 数组(2) { [0]= 整数(1) [1]= 整数(0) } [“Sor”]= 整数(3) } [1]= 数组(2) { [0]= 整数(1) [1]= 整数(0) } [“Sor”]= 整数(3) } [9) { [“最小值”]=> 整数(32) [“纳米”]=> 整数(1) [“ID”]=> 字符串(7) “1067481” [“Pnum”]=> 整数(0) [“Pn”]=> 字符串(13) “李东龙” [“PnumO”]=> 整数(0) [“IT”]=> 整数(36) [“Sc”]=>数组(2) { [0]=> int(2) [1]=> int(0) } [“Sor”]=> int(5) } } } }

我想在表格中显示它们 时间 |播放器 |事件

36'. 德布林.目标 45'. 马夏尔.黄牌

PHP 数组 嵌套

评论

1赞 ADyson 4/12/2023
你到底得到了什么错误?此外,如果您不向我们展示一些示例数据,我们很难对此发表评论,因此我们知道代码正在尝试处理什么。如果您能在您的问题中显示输出,那将对我们有很大帮助。另请参阅如何提问和如何生成问题的最小可重现示例。您可以编辑您的帖子。谢谢。var_export($summary);
2赞 Barmar 4/12/2023
$subsubsubkey是 的键,不是 。所以你可以写.$subsubvalue$subsubsubvalueecho $subsubvalue[$subsubsubkey];
0赞 Barmar 4/12/2023
你为什么要这样写?不是更容易写吗?$subsubsubvalue
0赞 Barmar 4/12/2023
您编写的内容仅在 的值是另一个与 具有相同键的数组时才有效。但在这种情况下,第一个代码将不起作用,因为您无法回显数组。$subsubvalue[$subsubsubkey]$subsubvalue
0赞 mickmackusa 4/12/2023
我没有纠结于如何访问数组/对象?,而是投票决定以错别字问题结束。您已经知道在循环中访问数组数据 - 您只是在最里面的循环中失败了。

答:

1赞 Quijote Shin 4/12/2023 #1

当您已经遍历最内层数组的值时,您似乎正在尝试使用键访问该值。为了实现你想要的,你应该直接在最里面的循环中回显键和值。无需使用密钥即可再次访问该值,因为您已经拥有该值$subsubsubvalue。

您也可以使用 $ssk 和 $ssv 作为简写名称。 作为建议,使用递归函数并在第一个 foreach 之后调用它

function rPrintNestedArray($array, $indent = 0) {
    foreach ($array as $key => $value) {
        if (is_array($value)) {
            echo str_repeat(" ", $indent * 4) . "$key:\n";
            rPrintNestedArray($value, $indent + 1);
        } else {
            echo str_repeat(" ", $indent * 4) . "$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 "$subsubsubkey: $subsubsubvalue\n";
                }
            }
        }
    } else {
        echo "$key: $value\n";
    }
}

评论

0赞 mickmackusa 4/12/2023
也许是一个更简单的递归缩进脚本带有 HTML 标签