PHP - 在foreach上复制<li>

时间:2017-01-11 22:04:15

标签: php

我不会说英语,但我会尝试得到它。 我的问题出在foreach ($json->mods->$k as $name) {,因为我收到重复<li>

以下是示例:

<ul id="1">
    <LI><B>BR:</B>
    <LI><B>BR:</B>
    <LI><B>BR:</B> Asterixmod, Explanado, Modquack</li>
    <br>
    <LI><B>DE:</B> Sweetphoenix</li>
    <br>
    <LI><B>E2:</B>
    <LI><B>E2:</B> Irishcow, Welshnutter</li>
</ul>


CODE:

<?php
echo '<ul id="1">';

$link = '.json';
$f = file_get_contents($link);
$json = json_decode($f);

if (empty($json)) {
    echo '<li id="ere"><B>ERROR</B></li>';
} else {

    foreach ($json as $key => $val) {

        foreach ($val as $k => $v) {

            foreach ($json->mods->$k as $name) {
                echo strtoupper('<li><b>' . $k . ':</b> ');
            }

            echo(implode(', ', $json->mods->$k));

            echo '</li><br>';

        }
    }

    echo '</ul>';
}

希望有人帮助我,ty。

1 个答案:

答案 0 :(得分:0)

您收到此错误的原因是因为您foreach ($json->mods->$k as $name)内部正在打开<li>,但在此循环之后您才会关闭它。这意味着,例如。 BR将有3个开始标记和一个结束标记。

此外,只需1个循环即可获得所需的输出:

foreach ($json->mods as $key => $val) {

    echo '<li><b>' . strtoupper($key) . ':</b> ';

    echo implode(', ', $val);

    echo '</li><br>';

}

或者你甚至可以使echo一行:

foreach ($json->mods as $key => $val) {

    echo '<li><b>' . strtoupper($key) . ':</b> ' . implode(', ', $val) . '</li><br>';

}

希望这有帮助!