1 回答
TA贡献1810条经验 获得超4个赞
你有几个问题。
首先,$data = $fileData;应该是$data[] = $fileData;。添加[]意味着赋值在数组中创建一个新元素,而不是覆盖整个变量。当你在 的开头初始化变量时getFilesAndContent,它应该是$data = [];。
第二,file_get_contents($fileInfo->getPathname())应该file_get_contents($path)。$fileInfo是 中的变量getFilesAndContent,不是getFileContents。
第三,implode()应该explode()。implode连接数组以创建字符串,explode()将字符串拆分为数组。
function getFilesAndContent($path)
{
$data = [];
$folderContents = new DirectoryIterator($path);
foreach ($folderContents as $fileInfo) {
if ($fileInfo->isDot()) {
continue;
}
$fileData = ['file_name' => $fileInfo->getBasename(),];
if ($fileInfo->getExtension()) {
$fileData['contents'] = getFileContents($fileInfo->getPathname());
}
$data[] = $fileData;
}
return $data;
}
function getFileContents($path)
{
$names = file_get_contents($path);
$names = explode("\n", $names);
sort($names);
$contents = '';
foreach ($names as $name) {
$contents += $name . ' (' . strlen($name) . ')<br>';
}
return $contents;
}
foreach (getFilesAndContent('.') as $data) {
echo $data['file_name'];
echo '<br>';
echo $data['contents'];
echo '<hr>';
}
- 1 回答
- 0 关注
- 162 浏览
添加回答
举报