測試環境 PHP version 5.3.29/5.6.29/7.1.0 Apache 2.4.25
替代語法的基本形式是把左花括號({)換成冒號(:),把右花括號(})分別換成 endif;,endwhile;,endfor;,endforeach; 以及 endswitch;。
不可以在一個控制模塊里混用兩種流程控制語法。
<?php$a =2; if($a): echo $a; if($b) { echo $b; }else: //解析錯誤 echo $c; endif;替代語法也可以寫成如下形式,方便在混編代碼中隨意循環HTML元素。
<?php for( $a = 0; $a < 5; $a++ ) { ?> //可隨意循環HTML元素<?php }; ?>只有do while循環沒有替代語法。
<?php //代碼解析錯誤 do : $a++ while ($a <= 10);for()循環的簡寫形式:
<?php for ($i = 1, $j = 0; $i <= 10; $j += $i, PRint $i, $i++);請注意for循環表達式的執行順序:expr1在循環開始前無條件求值(并執行)一次;expr2 在每次循環開始前求值;expr3 在每次循環之后被求值(并執行)。
<?php $array = array(0 => "a", 1 => "b", 2 => "c", 3 => "d"); for($i = 0; $i < count($array); $i++){ echo $array[$i]; //outputs ab unset($array[$i]); }foreach 不支持用”@”來抑制錯誤信息的能力。 PHP 5.5 增添了遍歷一個數組的數組的功能并且把嵌套的數組解包到循環變量中,只需將 list() 作為值提供。list() 中的單元可以少于嵌套數組的,此時多出來的數組單元將被忽略。
<?php $array = [ [1, 2], [3, 4], ]; foreach ($array as list($a, $b)) { echo "A: $a; B: $b/n"; // A: 1; B: 2 A: 3; B: 4 }如果想遍歷多維數組,list()函數可嵌套使用。
<?php $array = [ [1, 2, array(3, array(4, 5))], [3, 4, array(5, array(6, 7))], ]; foreach ($array as list($a, $b, list($c, list($d, $e)))) { echo "A: $a; B: $b; C: $c; D: $d; E: $e;<br>"; }關聯數組的索引如果是由float轉換過來的字符串,其索引仍然是string類型,如果是int型轉換過來的字符串,其索引會強制轉換成int。
<?php $arr = array(); $arr[0] = "zero"; // will stay an int $arr["1"] = "one"; // will be cast to an int ! $arr["two"] = "2"; // will stay a string $arr["3.5"] = "threeandahalf"; // will stay a string foreach($arr as $key => $value) { var_dump($key); }PHP 7 以下代碼會報錯,因為break不在循環或者switch語句中,而PHP 7 之前的版本則不會報錯。
<?php function a() { if (1 === 1) { break; } echo 'something'; }新聞熱點
疑難解答
圖片精選