如何将数组中的两个变量保存为键和值[PHP]

时间:2014-08-26 15:28:18

标签: php

我正在编写一个搜索.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,但显然会将网址保存为关键字,并且路径值无效,因为print_r($url)会返回Array ( [url-test ] => SplFileInfo Object ( [pathName:SplFileInfo:private] => /content/default.md [fileName:SplFileInfo:private] => default.md ) )

有人能告诉我我做错了什么并且可能有助于修复脚本吗?


编辑:显然这是我试图将其设置为值的变量的问题。

我一旦用$mdFile = $v替换$mdFile = (string)$v;就行了。

1 个答案:

答案 0 :(得分:0)

您正在每个循环上反复初始化$mdUrl数组。我想你想在foreach循环之上初始化它。