如何在无序列表中输出docs目录下所有文件链接?PHP代码报错求助
解决PHP遍历docs目录文件时的类型错误问题
错误原因
scandir('docs/') 返回的是一个字符串数组,数组里的每个$file元素都是纯文件名字符串,不是关联数组。你用$file[name]这种数组偏移的方式访问字符串,就会触发Cannot access offset of type string on string的致命错误。
修正后的代码
还要注意排除scandir默认返回的.(当前目录)和..(上级目录)两个特殊项,同时生成符合需求的可点击文件链接:
<?php echo "<ul>"; $files = scandir('docs/'); foreach($files as $file) { // 跳过当前目录和上级目录 if($file === '.' || $file === '..') { continue; } // 生成指向文件的可点击链接 echo "<li><a href='docs/{$file}'>{$file}</a></li>"; } echo "</ul>"; ?>
关键修正点
- 直接使用
$file变量输出文件名,替代错误的$file[name]写法 - 增加判断逻辑跳过
.和..,避免无效目录项被输出 - 按照需求生成文件链接,让列表项可以直接点击访问对应文件
内容的提问来源于stack exchange,提问作者jenicekpernicek
相关产品推荐
相关产品推荐

