【问题标题】:Issues with php nested arraysphp嵌套数组的问题
【发布时间】:2015-06-11 18:52:33
【问题描述】:

基本上,我正在使用这个库,有人把它放在一起从我的 Minecraft 服务器返回信息。一切正常,除了这个页面,我只想列出模组及其版本号。你可以在这里看到输出:http://litcraft.net/view2.php

如您所见,它只是使用循环将信息转储到页面。我要做的就是进入最后一个数组“modinfo”,并且只在列表中找出 modid 和版本。一旦我得到它,我就可以格式化它,但我在打印该列表时遇到了问题。这是现在的代码:

<?php foreach( $Info as $InfoKey => $InfoValue ): ?>
    <tr>
        <td><?=htmlspecialchars($InfoKey); ?></td>
        <td><?php
if($InfoKey === 'favicon'){
    echo '<img width="64" height="64" src="' . Str_Replace("\n","",$InfoValue) . '">';
}else if(Is_Array($InfoValue)){
    echo "<pre>";
    print_r($InfoValue);
    echo "</pre>";
}else{
    echo htmlspecialchars( $InfoValue );
}
?></td>
                </tr>
<?php endforeach; ?>

所以我尝试这样做以挖掘数组并仅打印出 mod 列表:

<?php 
$len = count($Info['modinfo']['modList']) + 1;
echo "<p>There are " . $len . " mods.</p>";
for($i=0;$i<$len;$i++){
    foreach($Info['modinfo']['modlist'][$i] as $ModID => $ModVersion): ?>
                <tr>
                    <td><?=$ModID; ?></td>
                    <td><?=$ModVersion; ?></td>
                </tr>
    <?php endforeach;
}?>

我得到的只是你在页面上看到的错误 175 次......我做错了什么?我知道它必须是一些简单的东西,但现在一切都开始融合在一起了哈哈。

【问题讨论】:

  • 错误信息是什么?
  • 您能否提供$Info 数组的格式化print_r?这将帮助我们理解数组结构并了解您在做什么。如果它很长,您可以将其缩短为 2 或 3 个条目。此外,请务必删除任何私人/个人信息。
  • 未定义索引“modlist”。这意味着数组中没有键“modlist”,但是您在循环中要求它,因此会出现数百个错误。这也是您收到 foreach 错误的原因。
  • 你应该在计算之前检查 isset($Info['modinfo']['modList']) && is_numeric($Info['modinfo']['modList'])
  • 执行 $Info 的 print_r 或 var_dump 可能有很多没有设置 'modlist' 的实例。在使用这些值之前使用 isset 或 array_key_exists 会有所帮助。

标签: php arrays for-loop foreach


【解决方案1】:

你也可以做而不是foreach

echo $Info['modinfo']['modlist'][$i]['modid'] ;
echo $Info['modinfo']['modlist'][$i]['version'] ;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-01
    • 1970-01-01
    • 2019-05-24
    • 2019-02-23
    相关资源
    最近更新 更多