php中的流程控制

2021-08-11 08:24:34 字數 3990 閱讀 1183

if示例1

$a = 3;

if($a > 0)

elseif($a == 0)

else

echo '$a<0';

if示例2

$a = 3;

if($a > 0) :

echo '測試結果:';

echo '$a>0';

elseif($a == 0) : // 不能寫成else if

echo '測試結果:';

echo '$a==0';

else :

echo '測試結果:';

echo '$a<0';

endif; // 這裡必須有乙個分號

if示例3

<?php

$var = 10;

if($var > 0) else

?>

if示例4

<?php

$var = 10;

if($var > 0) :

?>

var > 0

<?php

else :

?>

var <= 0

<?php

endif;

?>

while示例1

$var = 0;

while($var < 10)

$var = 0;

while($var < 10) :

echo $var;

$var++;

endwhile;

while示例2

<?php

$var = 0;

while($var < 10)

?>

<?php

$var = 0;

while($var < 10) :

?>

ppp<?php

$var++;

endwhile;

?>

for示例1

for($i=0; $i<10; $i++)

for($i=0; $i<10; $i++) :

echo $i;

endfor;

for示例2

<?php

for($i=0; $i<10; $i++)

?>

<?php

for($i=0; $i<10; $i++) :

?>

ppp<?php

endfor;

?>

$var = 0;

dowhile($var < 10);

do-while沒有冒號代替語法

$arr = [1,2,3];

foreach($arr as &$val) // 引用方式遍歷,可修改陣列元素

unset($val); // 消除引用

foreach($arr as $key => $val) :  // 可同時遍歷到鍵和值

echo $key." => ".$val."\n";

endforeach;

當 foreach 開始執行時,陣列內部的指標會自動指向第乙個單元。這意味著不需要在 foreach 迴圈之前呼叫 reset()。

foreach只是方便遍歷,如果不使用foreach,也可以用其它迴圈進行代替,例如:

$arr = [1,2,3];

foreach($arr as $key => $val) :

echo $key." => ".$val."\n";

endforeach;

// 等價於...

$arr = array(1, 2, 3);

reset($arr);

while (list($key, $val) = each($arr))

其中,reset()函式將陣列的內部指標指向第乙個單元。each()函式返回陣列中當前的鍵/值對並將陣列指標向前移動一步。

對於多維陣列,foreach第一層遍歷到的將是一下一層的陣列,此時需要多層foreach迴圈,也可以使用list()直接提取到陣列元素:

$arr = [

[1,3,5,7],

[2,4,6,8]

];foreach($arr as list($a, $b, $c, $d))

echo $a.$b.$c.$d."\n";

foreach注意事項:

1.foreach 僅能夠應用於陣列和物件,如果嘗試應用於其他資料型別的變數,或者未初始化的變數將發出錯誤資訊。

2.由於 foreach 依賴內部陣列指標,在迴圈中修改其值將可能導致意外的行為。

3.引用方式的遍歷僅在被遍歷的陣列可以被引用時才可用(例如是個變數)。

4.引用試試遍歷時,最後乙個元素的 $value 引用在 foreach 迴圈之後仍會保留。建議使用 unset() 來將其銷毀。

5.foreach 不支援用"@"來抑制錯誤資訊的能力。

$arr = [

[1,2,3,4],

[5,6,7,8]

];foreach($arr as $x)

}// 輸出: 1 3 5

break和continue都可以帶上乙個可選的引數,以指定命令針對第幾層迴圈,預設情況下引數為1,表示當前層。引數不能使用變數,也不能是0或其他非法值,否則出錯。

$a = 3;

$b = 4;

$c = 4;

switch(4)

switch(4) :

case $a:

echo '$a';

break;

case $b:

echo '$b'; // 執行

break;

case $c:

echo '$c';

break;

default:

break;

endswitch;

注意,switch和第乙個 case 之間的任何輸出(含空格)將導致語法錯誤

<?php

$var = 5;

switch($var)

?>

注意事項:

1.continue 語句作用到 switch 上的作用類似於 break。如果在迴圈中有乙個 switch 並希望 continue 到外層迴圈中的下一輪迴圈,用 continue 2。

2.case 表示式可以是任何求值為簡單型別的表示式,即整型或浮點數以及字串。不能用陣列或物件,除非它們被解除引用成為簡單型別。

3.switch表示式與case表示式的比較使用==而不是===

4.case表示式不要求是常量表示式 

5.case和default之後可以使用分號來代替冒號

如果比較乙個數字和字串或者比較涉及到數字內容的字串,則字串會被轉換為數值並且比較按照數值來進行。在switch中,要特別注意:

switch("a")

php 中的 goto 與c語言中的 goto 類似,目標位置只能位於同乙個檔案和作用域,也就是說無法跳出乙個函式或類方法,也無法跳入到另乙個函式。也無法跳入到任何迴圈或者 switch 結構中。可以跳出迴圈或者 switch,通常的用法是用 goto 代替多層的 break。

PHP中的流程控制

if else if elseif elseelse if和elseif句法分析的含義有少許區別,但是底線是兩者會產生完全一樣的行為 while do while for foreach as 可以接受乙個可選的數字引數來決定跳出幾重迴圈 switch 允許使用分號代替 case 語句後的冒號 sw...

PHP中的流程控制

任何php指令碼都是由一系列的語句構成的。一條語句可以是乙個賦值語句,乙個函式呼叫,乙個迴圈,乙個條件語句或者是乙個空語句。也可以使用 將一組語句封裝成乙個語句組。if exp 執行一條語句 if exp if else語句 if elseif語句 if elseif.else語句 if巢狀形式 i...

php流程控制

流程 1 if statements if expression i a 5 i b 4 if i a i b elseif i a i b else 2 邏輯運算子 i a 5 i b 4 i c 6 i d 7 if i a i b i c i d if i a i b i c i d 3 sw...