2017-04-02 26 views
-4

我想通過它的值作爲參數到我的功能難以將參數傳遞到函數中?

function dostuff($input) { 
global $input; 

    if ($input == 5) { 
     $output = "Success"; 
    } else { 
     $output = "Failure"; 
    } 
echo $output; 
} 

爲什麼運行

dostuff(5); 

不回的輸出變量(「成功」),像它應該?

+0

我不明白爲什麼你有'$ input = 5;'如果你使用'dostuff(5)'反正呢? –

+0

我認爲不需要全球性的美元投入; –

+0

因爲你在'global $ input;'中使用全局變量'$ input',這不等於5. – Rizier123

回答

0

你並不需要設置,試試這個:

function dostuff($input) { 
    if ($input == 5) { 
     $output = "Success"; 
    } else { 
     $output = "Failure"; 
    } 
echo $output; 
} 

有了這個,dostuff(5)返回 「成功」

說明:

global是使用全局變量成你的函數(http://php.net/manual/en/language.variables.scope.php),你不需要它,因爲你通過了$input函數參數先生

+2

儘管此代碼片段可能會解決此問題,但[包括解釋](http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)確實有助於提高帖子的質量。請記住,您將來會爲讀者回答問題,而這些人可能不知道您的代碼建議的原因。也請儘量不要用解釋性註釋來擠佔代碼,這會降低代碼和解釋的可讀性! – Rizier123

+0

感謝您的反饋。我試圖用更多的解釋來編輯我的帖子。 – Jouby

2

擴展在Jouby的解釋:

在PHP中,與許多其他語言,變量是,默認情況下,當地變量。這簡化了編寫安全函數的一些方面(減少偶然的副作用),但如果您真的想使用全局變量,則需要額外的步驟。

在函數定義中,參數變量是真正專用的局部變量。參數變量的神奇之處在於,當您調用函數時會自動分配它。

PHP中的global關鍵字將變量名與全局變量相關聯,有效地替換了局部變量。 如果你想使用全局數據,你只需要使用global,這通常不是一個好主意

在你的例子中,這正是你所做的。你用一個不存在的全局變量來破壞你的本地參數。只要刪除該聲明,事情應該工作。