0
嘿,這讓我頭疼。在遞歸函數中存儲的值和回顯值不同
我正在寫一個遞歸函數,它將通過一個文件目錄來創建一個xml站點地圖。
我所遇到的問題是,如果我回聲出它表明正是我想要的價值,但如果我把它存放(以寫,然後在最終的文件)的值是不同的。
function dirToArrayXML($dir, $langCode, $data)
{
$result = array();
$cdir = scandir($dir);
$str = "";
foreach ($cdir as $key => $value)
{
if (!in_array($value,array(".","..")))
{
if (is_dir($dir . "/" . $value))
{
$result[$value] = dirToArrayXML($dir . "/" . $value, $langCode, $data);
}
else
{
$result[] = $value;
if(endsWith($value, ".php"))
{
$page = substr($value, 0, -4);
$str .= "
<url>
<loc>http://www.example.com/".$dir."/".$page."</loc>
<changefreq>monthly</changefreq>";
echo "
http://www.example.com/".$dir. "/".$page;
$languages2 = array("en","de","el","es","ru","tr");
foreach($languages2 as $lang2)
{
$jazz = substr($dir, 3);
$filepath = $_SERVER['DOCUMENT_ROOT']."/".$lang2."/".$jazz."/".$page .".php";
if($langCode != $lang2)
{
if(file_exists($filepath))
{
echo "
http://www.formacompany.com/".$lang2."/".$jazz."/".$page;
$str.="
<xhtml:link rel=\"alternate\" hreflang=\"".$lang2."\" href=\"http://www.example.com/".$lang2."/".$jazz."/".$page ."\"/>";
}
}
}
$str.="
</url>";
$data.=$str;
}
}
}
}
return $data;
}
文件中的輸出值是
<url>
<loc>http://www.example.com/ru/company-details</loc>
<changefreq>monthly</changefreq>
<xhtml:link rel="alternate" hreflang="en" href="http://www.example.com/en//company-details"/>
<xhtml:link rel="alternate" hreflang="de" href="http://www.example.com/de//company-details"/>
<xhtml:link rel="alternate" hreflang="es" href="http://www.example.com/es//company-details"/>
</url>
儘管呼應值
http://www.example.com/ru/folder/company-details
http://www.example.com/en/folder/company-details
http://www.example.com/de/folder/company-details
http://www.example.com/ed/folder/company-details
爲什麼不同的值?我如何獲得存儲的值以匹配回顯的內容?
您可以直接把變量的引用的字符串讓生活自己更輕鬆並圍繞您的屬性使用單引號 - 例如'$ STR = 「 」;' –
2014-10-31 18:36:02