2017-02-22 49 views
-3
<?php switch (true) : 
    case $_GET['change']: 
     echo 'hello'; 
    break; 
    default: 
     echo 'bye'; 
    break; ?> 

它給我這個錯誤:

Parse error: syntax error, unexpected end of file in D:\xampp\htdocs\profile.php on line 47.

這是我的代碼的結束。 我忘了什麼,因爲如果我評論這段代碼,它效果很好。

+2

瞭解如何使用它http://php.net/manual/en/control-structures.switch。php – jitendrapurohit

+0

你不能把$ _GET ['change']作爲案例 – Naincy

+0

同意@jitendrapurohit – Naincy

回答

2

正確的代碼是:

<?php 
    switch (true) : 
     case $_GET['change']: 
      echo 'hello'; 
      break; 
     default: 
      echo 'bye'; 
      break; 
    endswitch; 
?> 

這是因爲你錯過endswitch;或者只是使用括號{}

+0

還有一個問題,這是正確的url http://localhost/profile.php?改變?? –

+0

它是有效的url,但如果其正確我不知道,如果頁面/profile.php存在,那麼是它是正確的url,?change是$ _GET參數。你可以像這樣使用它嗎?change = yourValue – Eimsas

1

應該如下:

<?php 
switch ($_GET['change']) { 
case [YOURVALUEHERE]: 
    echo 'hello'; 
break; 
default: 
    echo 'bye'; 
break; 
} 
?> 

來自實例PHP.net

<?php 
switch ($i) { 
    case 0: 
     echo "i equals 0"; 
     break; 
    case 1: 
     echo "i equals 1"; 
     break; 
    case 2: 
     echo "i equals 2"; 
     break; 
    default: 
     echo "i is not equal to 0, 1 or 2"; 
} 
?> 
1

這是更好地設置括號:如果你想使用alternate syntax看看這個警告

<?php 
switch ($_GET['change']) { 
    case true: 
     echo 'hello'; 
    break; 
    default: 
     echo 'bye'; 
    break; 
} 
?> 

Warning

Any output (including whitespace) between a switch statement and the first case will result in a syntax error. For example, this is invalid:

3

你的開關情況下需要變量來處理case像:

<?php 
switch($_GET["change"]) 
{ 
    case "value": 
    echo "You called this case."; 
    break; // Stop the switch for being executing futher. 

    default: // Set default message if the case wasn't found. 
    echo "Cannot find the case."; 
    break; 

} 
?> 

瞭解更多:http://php.net/manual/en/control-structures.switch.php

2

您使用的是控制結構的替代語法,這意味着你必須在年底前關閉開關,這個

endswitch 

讓你完整的代碼

switch (true): 
    case $_GET['change']: 
     echo 'hello'; 
     break; 
    default: 
     echo 'bye'; 
     break; 
endswitch; 
?> 

雖然,您可以將這段代碼簡化爲以下內容,除非您打算擴展您的switch/case結構。

echo isset($_GET['change']) ? "hello" : "bye"; 

在任何情況下,只是在做case $_GET['change']:只是檢查是否持有任何價值,他們不是什麼,或者如果將其設置好,所以你可能會得到這個警告。如果您打算擴大你的結構,你應該看到@ C0dekid的例子 - 這就是你應該如何建立自己的switch/case

0

你沒有把正確的外殼爲您開關,不要使用「:」而是「{」。例如:

switch (true) { 
case $_GET['change']: 
    echo 'hello'; 
break; 
default: 
    echo 'bye'; 
break; 
} 
+0

請參閱http://php.net/manual/en/control-structures.alternative-syntax.php。 – chris85

+0

是的,他忘了結尾......但是不應該刪除這些問題嗎? – ermacmkx

+0

是的,但有6個答案現在不能刪除。 – chris85