我有一個應該打印目錄內容的遞歸函數。下面是代碼遞歸函數中的變量表現爲全局函數
function dirs($dir, $tab) {
$d = opendir($dir);
while (($name = readdir($d)) !== false) {
if ($name == "." or $name == "..") continue;
if (is_dir($dir . '/' . $name)) {
echo "<b>" . $tab . "[$name]</b><br>";
$tab .= "-";
dirs($dir . '/' . $name, $tab);
}
else {
echo $tab . $name . '<br>';
}
}
closedir($d);
}
dirs("C:/php5", "");
該函數的輸出貴方覺得這樣的([額外]是空的directoty):
[dev]
-php5ts.lib
-[ext]
--php_bz2.dll
--php_curl.dll
--php_enchant.dll
--php_exif.dll
--etc.
--[extras]
---glib-2.dll
---gmodule-2.dll
---icudt.dll
---icudt46.dll
---icuin.dll
---etc.
但不是那樣的
[dev]
-php5ts.lib
[ext]
-php_bz2.dll
-php_curl.dll
-php_enchant.dll
-php_exif.dll
-etc.
[extras]
glib-2.dll
gmodule-2.dll
icudt.dll
icudt46.dll
etc.
的問題是爲什麼「$ tab」表現爲全局變量而不是本地變量?
在此先感謝。
$ tab =。 「 - 」;是無效的語法... – sirbrialliance
對不起朋友。我不太明白這個問題? – stefgosselin
對不起,$ tab。=「 - 」; (已更改) – Placido