首页 > 解决方案 > 使用 PHP 循环遍历多维数组

问题描述

我正在尝试学习 php 并与 API 交谈以检索我的 Destiny 2 部落的信息。我已检索到所需的所有信息,并使用以下格式构建了一个新数组:

Array
(
    [displayname] => Senaxx
    [membershipId] => 4611686018428643772
    [characterdetails] => Array
        (
            [0] => Array
                (
                    [2305843009260824684] => Array
                        (
                            [characterlevel] => 30
                            [light] => 384
                            [datelastplayed] => 2018-08-19T13:23:27Z
                            [minutesplayed] => 14901
                            [racehash] => 898834093
                            [genderhash] => 3111576190
                            [emblempath] => /common/destiny2_content/icons/2b6160e0f21e748cd996b404771a850c.jpg
                            [emblemhash] => 10493725
                        )

                )

            [1] => Array
                (
                    [2305843009260824685] => Array
                        (
                            [characterlevel] => 30
                            [light] => 394
                            [datelastplayed] => 2018-08-18T20:47:09Z
                            [minutesplayed] => 9647
                            [racehash] => 2803282938
                            [genderhash] => 3111576190
                            [emblempath] => /common/destiny2_content/icons/dcfe74b7a343dd28bd45eee4ea59a1f7.jpg
                            [emblemhash] => 3860733295
                        )

                )

            [2] => Array
                (
                    [2305843009260824686] => Array
                        (
                            [characterlevel] => 30
                            [light] => 394
                            [datelastplayed] => 2018-08-26T00:15:50Z
                            [minutesplayed] => 1802
                            [racehash] => 2803282938
                            [genderhash] => 3111576190
                            [emblempath] => /common/destiny2_content/icons/dcfe74b7a343dd28bd45eee4ea59a1f7.jpg
                            [emblemhash] => 3860733295
                        )

                )

        )

)
Array
(
    [displayname] => base1981
    [membershipId] => 4611686018433367605
    [characterdetails] => Array
        (
            [0] => Array
                (
                    [2305843009265162076] => Array
                        (
                            [characterlevel] => 30
                            [light] => 358
                            [datelastplayed] => 2018-08-15T11:58:46Z
                            [minutesplayed] => 13732
                            [racehash] => 2803282938
                            [genderhash] => 3111576190
                            [emblempath] => /common/destiny2_content/icons/9d512efea06e54c1768d434e53510092.jpg
                            [emblemhash] => 1291068173
                        )

                )

            [1] => Array
                (
                    [2305843009265162077] => Array
                        (
                            [characterlevel] => 1
                            [light] => 100
                            [datelastplayed] => 2017-09-06T14:25:35Z
                            [minutesplayed] => 0
                            [racehash] => 898834093
                            [genderhash] => 2204441813
                            [emblempath] => /common/destiny2_content/icons/911791e90f955fc637398ea88aba74b7.jpg
                            [emblemhash] => 1907674137
                        )

                )

            [2] => Array
                (
                    [2305843009265162078] => Array
                        (
                            [characterlevel] => 30
                            [light] => 350
                            [datelastplayed] => 2018-05-27T12:07:38Z
                            [minutesplayed] => 1658
                            [racehash] => 3887404748
                            [genderhash] => 3111576190
                            [emblempath] => /common/destiny2_content/icons/da0d265bb9e4473c97ba56dc7602ca73.jpg
                            [emblemhash] => 3941202506
                        )

                )

        )

)

这些只是 2 个玩家阵列。我的整个代码有 8 个。但对于这个例子,我认为其中 2 个就足够了。

我的目标是遍历数组并检索每个显示名称的所有玩家信息。

所以我从完美的开始:

foreach($claninfo as $clanmember)
{
 echo $clanmember['membershipId']; 
}

可悲的是,仅抓住角色细节对我来说是行不通的。mee 的问题似乎是有一个未知数字的额外 characterId。

foreach($claninfo as $clanmember)
{
 echo $clanmember['membershipId']; 
    foreach($claninfo->characterdetails as $characterdetails)
    {
      echo $characterdetails-> light;
    } 
}

最终目标是创建一个包含一些信息的表格:

<table>
<tbody>
<tr>
<td>Displayname</td>
<td>Playtime</td>
<td>Character 1</td>
<td>Character 2</td>
<td>Character 3</td>
</tr>
<tr>
<td>Senaxx</td>
<td>&nbsp;</td>
<td>light 384</td>
<td>light 394</td>
<td>light 394</td>
</tr>
<tr>
<td>Base1981</td>
<td>&nbsp;</td>
<td>light 358</td>
<td>light 100</td>
<td>light&nbsp;350</td>
</tr>
</tbody>
</table>

标签: phphtmlarraysapi

解决方案


直到灯的关联数组键是: $claninfo[<some key or index>]['characterdetails'][<Array Index>][<character id>]['light']

因此,要访问,您需要使用foreach 3 次:

  1. 从部落信息中获取部落成员

  2. 迭代 $clanmember['characterdetails']

  3. 摆脱字符ID

    foreach($claninfo as $clanmember)
    {
        echo $clanmember['membershipId']; 
    
    
       foreach($clanmember['characterdetails'] as $characterArray)
        {
    
           foreach($characterArray as $characterid => $characterdetails)
           { // You can access $characterid in this block
               echo $characterdetails['light'];
           } 
        } 
    }
    

推荐阅读