5

我正在尝试将一些数组值映射到无序 () 列表。

    <?php
            $files = scandir($dir);
            //remove "." and ".."
            print_r($files);
    ?>

    <ul>
        <?php foreach($files as $file): ?>
            <li><?= $file ?></li>
        <?php endforeach; ?>
    </ul>

它确实正确地遍历了数组,因为它为<li>元素提供了项目符号。但是,在这些项目符号旁边没有看到字符串输出。另外,当我 print_r 数组时,值就在那里。

输出看起来像这样,带有正确数量的项目符号,但它们旁边没有文本:

.
.
.

我在这里做错了什么?提前致谢。

4

5 回答 5

6
function array2ul($array) {
    $out = "<ul>";
    foreach($array as $key => $elem){
        if(!is_array($elem)){
            $out .= "<li><span>" . $key . ": " . $elem . "</span></li>";
        } else {
            $out .= "<li><span>" . $key . "</span>" . array2ul($elem) . "</li>";
        }
    }
    $out .= "</ul>";
    return $out; 
}
于 2012-04-14T08:36:36.807 回答
4
<?php foreach($files as $file): ?>
    <li><?php echo $file ?></li>
<?php endforeach; ?>

或者

<?php foreach($files as $file): ?>
    <li><? echo $file ?></li>
<?php endforeach; ?>
于 2012-04-14T06:56:05.483 回答
3

我不确定这一点,但这可能有效:

<?php
  $files = scandir($dir);
  //remove "." and ".."
  print_r($files);
?>

<ul>
  <?php foreach($files as $file) { ?>
  <li><?php echo $file; ?></li>
  <?php } ?>
</ul>

这就是我要使用的,如果这不起作用,可能是因为您的$dir变量不包含任何内容(有错误)。您的原始代码可能无法正常工作的一个原因是,我认为这些<? ?>标签并非在每台服务器上都兼容。另外,据我所知,<?=$var ?>php 中没有任何东西。我以为它只存在于 ASP 之类的。

编辑:在回答您关于花括号的劣势的问题时,它们是 PHP 中普遍接受的标准。这在 C/C++/C# 系列中可能有所不同,我不知道。

于 2012-04-14T06:56:38.230 回答
2

<?= $file ?>用php.ini替换<?php echo $file ?>或启用您的排序标签;看来您的服务器没有启用它。

于 2012-07-12T13:10:10.720 回答
1

今天用这个:

if ( !empty($files) ) echo '<li>' . implode('<li>', $files);
于 2013-07-15T19:01:46.647 回答