我們先舉個簡單示例:
<?php goto LABEL; //這個標簽自定義 echo '喬峰'; LABEL: echo '鳩摩智';
以上例程會輸出:鳩摩智
解釋:
goto 操作符可以用來跳轉到程序中的另一位置。該目標位置可以用目標名稱加上冒號來標記,而跳轉指令是 goto 之后接上目標位置的標記。
PHP 中的 goto 有一定限制,目標位置只能位於同一個文件和作用域,也就是說無法跳出一個函數或類方法,也無法跳入到另一個函數。
也無法跳入到任何循環或者 switch 結構中。可以跳出循環或者 switch,通常的用法是用 goto 代替多層的 break。
我們再看一個示例:
<?php for($i=0, $j=10; $i<20; $i++) { while($j--) { if($j==6) goto end; } } echo"這里不會被輸出"; end: echo "i = $i\n"; echo 'stop here';
上面可以看到直接輸出end后面的了,繼續看:
$number = 1; switch($number){ case 1: goto one; //使用goto跳到one標記處 echo "第一名"; //goto已經跳轉,這條語句不執行 case 2: goto two; echo "第二名"; case 3: goto three; echo "第三名"; } one: echo " 武林第一!"; //exit; two: echo " 武林第二!"; //exit; three: echo " 武林第三!"; //exit; /* 最終結果是:武林第一! 武林第二! 武林第三! 注意后面的exit 注釋了,為何不是最終輸出 武林第一,大家可以琢磨下。 */
雖然goto平時用的不多。但有時候在特定場景下效率還是很高的。