我目前正在编写一个脚本,该脚本搜索.md文件并从中提取一个字符串,但在将该字符串保存在数组中时遇到了问题。
下面是我使用的代码:
$flags = \FilesystemIterator::SKIP_DOTS;
$iterator = new \RecursiveDirectoryIterator($userContent, $flags);
$iterator = new \RecursiveIteratorIterator($iterator, \RecursiveIteratorIterator::SELF_FIRST);
foreach ($iterator as $v) {
$checkFiles = strpos($v, ".md");
$url = array();
if (!$checkFiles == '') {
$mdFile = $v;
$mdContent = file_get_contents($mdFile);
$mdBreak = strpos($mdContent, "url: ");
$mdContent = substr($mdContent, $mdBreak + 5);
$mdBreak = strpos($mdContent, "\n");
$mdUrl = substr($mdContent, 0, $mdBreak);
echo $mdUrl . ' => ' . $mdFile;
echo '<br>';
$url[$mdUrl] = $mdFile;
}
}脚本成功地找到了.md文件,也成功地在这些文档中找到了url: custom-url。
此外,echo $mdUrl . ' => ' . $mdFile;返回custom-url => /content/default.md,但显然将url保存为键,路径作为值不起作用,因为print_r($url)返回Array ( [url-test ] => SplFileInfo Object ( [pathName:SplFileInfo:private] => /content/default.md [fileName:SplFileInfo:private] => default.md ) )
谁能告诉我我做错了什么,也许能帮我修复剧本吗?
编辑:显然,这是一个变量的问题,我试图设置为值。
当我用$mdFile = $v取代$mdFile = (string)$v;时,它就起作用了。
发布于 2014-08-26 15:32:30
您正在每个循环上一次又一次地初始化$mdUrl数组。我想你是想在foreach循环上面初始化它。
https://stackoverflow.com/questions/25509641
复制相似问题