Skip to content

if else ​

php
if($a) {
  
}

if($a == 1) {
  
} else{
  
}

if($a == 1) {
  echo '1';
}else if($a == 2) {
  echo '2';
}else{
  echo 'other';
}

#简写  不推荐
if ($a == 1):
  echo "1";
else:
	echo "else";
endif;

switch ​

switch 语句类似于具有同一个表达式的一系列 if 语句。很多场合下需要把同一个变量(或表达式)与很多不同的值比较,并根据它等于哪个值来执行不同的代码.每个case分支的break不能省去,如果省去,则会往下执行

php
if($a == 1) {
  echo '1';
}else if($a == 2) {
  echo '2';
}else{
  echo 'other';
}
# swtich 
switch ($a) {
  case 1:
    echo '1';
    break;
  case 2:
    echo '2';
    break;
  default:
    echo 'othre';
    break;
}

while 、do while ​

while 循环是 PHP 中最简单的循环类型.只要表达式是true是一直执行,直到条件为false为止.

do-while 循环和 while 循环非常相似,区别在于表达式的值是在每次循环结束时检查而不是开始时。和一般的 while 循环主要的区别是 do-while的循环语句保证会执行一次(表达式的真值在每次循环结束后检查)

php
$a = 10;
while($a>1) {
  echo $a--;//1098765432
}
#do while
$b = 1;
do{
  echo $b; //1
}while($b>1)

for、foreach ​

for 循环是 PHP 中最复杂的循环结构。它的行为和 C 语言的相似

for (expr1; expr2; expr3)
    statement

第一个表达式(expr1)在循环开始前无条件求值(并执行)一次。

expr2 在每次循环开始前求值。如果值为 TRUE,则继续循环,执行嵌套的循环语句。如果值为 FALSE,则终止循环。

expr3 在每次循环之后被求值(并执行)。

php
$people = Array(
        Array('name' => 'Kalle', 'salt' => 856412), 
        Array('name' => 'Pierre', 'salt' => 215863)
        );

for($i = 0; $i < count($people); ++$i)
{
    $people[$i]['salt'] = rand(000000, 999999);
}
//每次都计算count 代码执行慢 可以使用中间变量

$count = count($people);
for($i = 0; $i < $count; ++$i)
{
    $people[$i]['salt'] = rand(000000, 999999);
}

foreach 语法结构提供了遍历数组的简单方式。foreach 仅能够应用于数组和对象

php
foreach($array as $key=>$value) {
  
}
# 简写
foreach($array as $key=>$value):
  
endforeach;
#引用修改 数组最后一个元素的 $value 引用在 foreach 循环之后仍会保留。建议使用 unset() 来将其销毁。

foreach (array(1, 2, 3, 4) as &$value) {
    $value = $value * 2;
}
unset($value);

break 、continue ​

break 结束当前 for,foreach,while,do-while 或者 switch 结构的执行。break后面可以跟一个数字。表示跳出几重循环

php
for($i = 0; $i < 10; $i++) {
  if($i==5){
    break;
  }
  echo $i;
}
//01234
for($i=0;$i<10;$i++) {
  for($j=0;$j<5;$j++) {
   	if($j == 2) {
      break 2; #跳出两层循环
   	}
  }
}

continue 在循环结构用用来跳过本次循环中剩余的代码并在条件求值为真时开始执行下一次循环

continue 接受一个可选的数字参数来决定跳过几重循环到循环结尾。默认值是 1,即跳到当前循环末尾

php
for($i = 0; $i < 10; $i++) {
  if($i==5){
    continue;
  }
  echo $i;
}
// 012346789

declare ​

declare 结构用来设定一段代码的执行指令。declare 的语法和其它流程控制结构相似

目前只认识两个指令:ticks encoding

Tick(时钟周期)是一个在 declare 代码段中解释器每执行 N 条可计时的低级语句就会发生的事件。N 的值是在 declare 中的 directive 部分用ticks=N 来指定的

encoding 指令来对每段脚本指定其编码方式。

php
declare(ticks=1);

// A function called on each tick event
function tick_handler()
{
    echo "tick_handler() called\n";
}

register_tick_function('tick_handler');

$a = 1;

if ($a > 0) {
    $a += 2;
    print($a);
}
declare(encoding='ISO-8859-1');

return ​

在函数中使用return 将结束函数的执行。

return 是语言结构而不是函数,因此其参数没有必要用括号将其括起来。通常都不用括号,实际上也应该不用,这样可以降低 PHP 的负担。

php
function f(){
  return 1;
  echo '11';//不会执行
}

#a.php
<?php
include("b.php");
echo "a";
?>

#b.php
<?php
echo "b";
return;
?>
// ba

include 、require ​

include(path) 会按照给定的参数 进行查找,如果没有找到就到include_path中查找。如果还没有找到,那么就会抛出一个警告。

如果定义了路径——不管是绝对路径(在 Windows 下以盘符或者 ** 开头,在 Unix/Linux 下以 / 开头)还是当前目录的相对路径。include_path就会被忽略。

require 和include查找文件基本上一致。只是require会抛出一个error错误终止代码的执行。

require 和include是一个语言构造器而不是一个函数

php
include 'a.php';
echo "hello";
# 会输出hello

require 'a.php';
echo "hello";
# 抛出一个error hello不会输出。

include_once 、require_once ​

include_once 、require_once 语句在脚本执行期间包含并运行指定文件.如果该文件中已经被包含过,则不会再次包含

include_once 会抛出warning 。require_once 会抛出error

goto ​

goto操作符并不常用。用来跳转程序的一个位置。目标位置只能位于同一个文件和作用域

无法跳出一个函数或类方法,也无法跳入到另一个函数。也无法跳入到任何循环或者 switch 结构中

php
<?php
for($i=0,$j=50; $i<100; $i++) {
  while($j--) {
    if($j==17) goto end; 
  }  
}
echo "i = $i";
end:
echo 'j hit 17';
?>

基于 VitePress 构建 · 欢迎 Star 与 PR