0
echo '<td width="11%" class="imagetd">';
if (empty($arrImageFile[$key])) {
    echo '&nbsp;';
} else {
    echo '<ul class="qandaul"><li>';
    echo htmlspecialchars(is_array($arrImageFile[$key]) ? implode("\n", $arrImageFile[$key]) : $arrImageFile[$key]);
    echo '</li></ul>';
}
echo '</td>';

在上面的代码中,我有一些图像名称,现在每个图像名称都由换行符分隔,但我遇到的问题是它没有为插入换行符中的每个图像文件名显示一个项目符号。它只为第一个图像名称显示一个项目符号点,就是这样。在上面的示例中,如何为每个图像名称插入一个项目符号?

更新

CSS是否在下面生效:

ul, ul li { margin: 0; padding: 0; } ul { margin-left: 1.3em; }

下面指的是胡安的回答,我想确保它是正确的,因为它不起作用:

echo '<td width="11%" class="imagetd">';
if (is_array($arrImageFile[$key]) {
    foreach($arrImageFile[$key]  as $img)  {
        if (empty($arrImageFile[$key])) {
            echo '&nbsp;';
        } else {
            echo '<ul class="qandaul"><li>';
            echo '<li>' . htmlspecialchars($img) . '</li>'
        }
    }          
    echo '</li></ul>';
}
echo '</td>';
4

5 回答 5

1

您将所有图像文件放入<li>. <li>为每个图像创建一个单独的

echo '<ul class="qandaul>';
if (empty($arrImageFile[$key])) {
    echo '<li>&nbsp;</li>';
} else {
    if (is_array($arrImageFile[$key]) {
        foreach($arrImageFile[$key] as $img)  {
            echo '<li>' . htmlspecialchars($img) . '</li>';
        }
    } else {
        echo '<li>' . htmlspecialchars($arrImageFile[$key]) . '</li>';
    }
}
echo '</ul>';

或者您可以使用其他人建议的数组内爆技巧。我倾向于认为这不太可读。

echo implode("</li>\n<li>", array_map(function($item){
    return htmlspecialchars($item);
},  $arrImageFile[$key]));
于 2013-01-23T00:11:21.427 回答
0

而不是implode("\n", $arrImageFile[$key])

使用implode("</li>\n<li>", $arrImageFile[$key])

关键是您需要li为一张图片创建一张。

echo '<td width="11%" class="imagetd">';
if (empty($arrImageFile[$key])) {
    echo '&nbsp;';
} else {
    echo '<ul class="qandaul"><li>';
    echo htmlspecialchars(is_array($arrImageFile[$key]) ? implode("</li>\n<li>", $arrImageFile[$key]) : $arrImageFile[$key]);
    echo '</li></ul>';
}
echo '</td>';
于 2013-01-23T00:11:25.613 回答
0

这是因为所有东西都包装在一个<li>标签中。echo '<ul class="qandaul"><li>';

把每一个放在它自己的<li>

于 2013-01-23T00:11:28.963 回答
0

html 中的一个指向列表标记是:

<ul>
    <li>First</li>
    <li>Second</li>
    <li>Third</li>
</ul>

所以你必须用 "</li><li>" 内爆或使用 for 循环(或 foreach)。

于 2013-01-23T00:11:48.420 回答
-1

要点取决于您的 CSS 样式,请检查 CSS 样式对 ul 和类 qandaul 的说明。

于 2013-01-23T00:11:49.790 回答