我正在尝试将一些数组值映射到无序()列表。
<?php
$files = scandir($dir);
//remove "." and ".."
print_r($files);
?>
<ul>
<?php foreach($files as $file): ?>
<li><?= $file ?></li>
<?php endforeach; ?>
</ul>
它会正确迭代数组,因为它为<li>
元素提供了项目符号。但是,这些项目符号旁边没有看到字符串输出。此外,当我print_r数组时,值就在那里。
输出看起来像这样,子弹数量正确,但旁边没有文字:
。
。
我在这里做错了什么?提前谢谢。
答案 0 :(得分: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;
}
答案 1 :(得分:5)
<?php foreach($files as $file): ?>
<li><?php echo $file ?></li>
<?php endforeach; ?>
或强>
<?php foreach($files as $file): ?>
<li><? echo $file ?></li>
<?php endforeach; ?>
答案 2 :(得分:4)
我不确定这一点,但这可能会奏效:
<?php
$files = scandir($dir);
//remove "." and ".."
print_r($files);
?>
<ul>
<?php foreach($files as $file) { ?>
<li><?php echo $file; ?></li>
<?php } ?>
</ul>
这就是我要使用的,如果这不起作用,可能是因为你的$dir
变量不包含任何内容(有错误)。您的原始代码可能无效的一个原因,因为我认为<? ?>
标记在每个服务器上都不兼容。另外,据我所知,php中没有<?=$var ?>
的东西。我认为它只存在于ASP等中。
编辑:在回答有关花括号低劣的问题时,它们是PHP中普遍接受的标准。这可能与C / C ++ / C#系列有所不同,我不知道。
答案 3 :(得分:3)
将<?= $file ?>
替换为<?php echo $file ?>
或通过php.ini启用排序标记;看来你的服务器没有启用它。
答案 4 :(得分:1)
今天使用它:
if ( !empty($files) ) echo '<li>' . implode('<li>', $files);