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


How to save two variables in an array as key and value [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,但显然将url保存为键和路径作为值不起作用,因为print_r($url)返回Array ( [url-test ] => SplFileInfo Object ( [pathName:SplFileInfo:private] => /content/default.md [fileName:SplFileInfo:private] => default.md ) )

有人能告诉我我做错了什么,也许帮助修复脚本?


编辑:显然,这是一个问题的变量,我试图设置值。

当我用$mdFile = (string)$v;代替$mdFile = $v时,它起作用了。

在每个循环中一次又一次地初始化$mdUrl数组。我猜你想在foreach循环上面初始化它