2014-02-11 41 views
4

我一直在尋找一小時以來的錯誤代碼。這是錯誤:500 - 內部服務器錯誤與額外的一對括號

寫作:中

if(isset(($_POST['to']))) 

代替

if(isset($_POST['to'])) 

我不明白這是爲什麼額外對括號引起內部服務器錯誤。

我不認爲圍繞變量的括號永遠不會改變它的值。我的意思是,

$a = $b; 
$c = ($b); 

$a==$c; //True 

我很好奇,爲什麼它是錯誤?

謝謝。

編輯:

上述錯誤正在發生正常變量也。

+0

@Jack有3個開頭和3個右括號 –

+0

isset是一個PHP函數.http://in2.php.net/isset – ghost

+0

@ghost我知道這一點。這就是爲什麼我標記'php' – nitish712

回答

2

這是因爲isset不是功能,而是一個語言結構;因此,其定義可在language parser中找到。

T_ISSET '(' isset_variables ')' { $$ = $3; } 

它只是期待一雙大括號;傳遞另一對會導致解析錯誤。

+0

如果它是一個分析錯誤,爲什麼即使在啓用所有的錯誤後它不顯示? – nitish712

+0

@ nitish712,如果你有正確的錯誤報告,它會100%導致解析錯誤。你得到500的原因是因爲你的配置不想顯示PHP錯誤。 – Prisoner

1

我很確定它與事實isset不能在參數中的功能有關。你必須傳遞一個價值。您額外的一對括號可能被評估爲「函數」或需要評估的內容。

通常,當你試圖通過一個函數isset,你得到這個錯誤:

Can't use method return value in write context 
1

isset

警告

isset() only works with variables as passing anything else will result in a parse error. For checking if constants are set use the defined() function.

0

的信息可以通過參數傳遞給函數。一個參數就像一個變量。

在括號內的函數名後面指定參數。您可以根據需要添加儘可能多的參數,只需用逗號分隔即可。

以下示例具有帶一個參數($ fname)的函數。當familyName()函數被調用,我們也沿着一個名稱(例如賈尼)通過,並在名稱使用功能,輸出幾個不同的名字裏面,但平等的姓氏:

<?php 
function familyName($fname) 
{ 
echo "$fname Refsnes.<br>"; 
} 

familyName("Jani"); 
familyName("Hege"); 
familyName("Stale"); 
familyName("Kai Jim"); 
familyName("Borge"); 
?>