我正在使用$debug
變量來控制我正在測試的函數中的打印語句。儘管$debug
在與函數相同的範圍級別聲明並初始化爲true
,但它在函數內被視爲false
(或undefined
,我猜)。我對PHP中變量作用域的理解錯誤嗎?我該如何解決?應該在範圍內的變量不是
我的實際代碼要複雜得多,但下面是一個展示相同問題的最小例子。對於它的價值,我使用Mac OS X 10.9.4上的PHP 5.4.24命令行來運行它。
<?php
$debug = true;
function myFunction()
{
if($debug) {
echo "I'm debugging";
} else {
echo "I'm not debugging";
}
}
myFunction();
?>
對我來說這個功能顯示「我沒有調試」。
這是* *基本範圍在這裏。 '$ debug'不在*範圍內。你爲什麼認爲這是? –
@JohnConde它與函數本身處於同一級別。那不在範圍內? –
這不是JavaScript。在函數之外聲明的變量超出範圍。 [文檔](http://php.net/manual/en/language.variables.scope.php)。 –