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

I'm currently writing a script that searches for .md files and extracts a string out of it but I'm running into problems concerning saving this string in an array.

Here is the code I'm using:

$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, "
");
        $mdUrl = substr($mdContent, 0, $mdBreak);

        echo $mdUrl . ' => ' . $mdFile;
        echo '<br>';

        $url[$mdUrl] = $mdFile;

    }

}

The script succeeds in finding the .md files and also succeeds in finding the url: custom-url inside those documents.

Furthermore echo $mdUrl . ' => ' . $mdFile; returns custom-url => /content/default.md but apparently saving the url as key and the path as value does not work as print_r($url) returns Array ( [url-test ] => SplFileInfo Object ( [pathName:SplFileInfo:private] => /content/default.md [fileName:SplFileInfo:private] => default.md ) )

Could someone tell me what I did wrong and maybe help with fixing the script?


EDIT: Apparently it was a problem of the variable I tried to set as value.

As soon as I replaced $mdFile = $v with $mdFile = (string)$v; it worked.

You are initializing the $mdUrl array again and again on each loop. I guess you wanted to initialize it above the foreach loop.