【发布时间】: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