循环

PHP 中提供了 4 种循环控制语句,分别是 while、do while、for 和 foreach。本节只讲解 foreach 循环,其它 3 种循环请猛击以下链接学习:

  1. foreach (数组 as 值){
  2. //执行的任务
  3. }
  4. //格式2
  5. foreach (数组 as 下标 => 值){
  6. //执行的任务
  7. }

第一种格式遍历 array_expression 数组时,每次循环将数组的值赋给 $value;第二种遍历不仅将数组值赋给 $value,还将键名赋给 $key。

2. while

重复执行某项任务
上一节的while语句是先判断条件是否成立,再执行任务

while(条件){ 
     //执行任务
}

首先执行任务,执行任务完毕,判断某个条件是否符合(条件返回值是否为TRUE)
若符合则再次执行任务,执行完毕任务,继续判定条件。

do{ 
     //执行任务
}while(条件)

3. for

for($i = 1,$sum = 0;$i<=100;$i++){
}

4. foreach

不能foreach空, 否则报错
Warning: Invalid argument supplied for foreach() in

$empty = array();
$empty['222'] = 2;
foreach($empty['1111'] as $_){
    echo "$_<br/>";
}

分支

1. switch

  1. 对表达式(通常是变量)进行一次计算
  2. 把表达式的值与结构中 case 的值进行比较
  3. 如果存在匹配,则执行与 case 关联的代码
  4. 代码执行后,break 语句 阻止代码跳入下一个 case 中继续执行
  5. 如果没有 case 为真,则使用 default 语句

PHP switch分支语句中省略break后还会执行其他case的原因分析

switch (expression){
case label1:
  expression = label1 时执行的代码 ;
  break;  
case label2:
  expression = label2 时执行的代码 ;
  break;
default:
  表达式的值不等于 label1 及 label2 时执行的代码;
}

ifelse

<?php

if(条件一){
     //分配服务器干的任务A
}else if(条件二){
     //分配服务器干的任务B
}else{
     //分配服务器干的任务C
}

?>

跳转

goto

goto操作符可以用来跳转到程序中的某一指定位置。该目标位置可以用目标名称加上冒号来标记。

PHP中的goto有一定限制,只能在同一个文件和作用域中跳转,也就是说你无法跳出一个函数或类方法,也无法跳入到另一个函数。

你也无法跳入到任何循环或者switch 结构中。常见的用法是用来跳出循环或者switch,可以代替多层的break。

goto a;
echo 'Foo';//此句被略过

a:
echo 'Bar';
//上面的例子输出结果为: Bar;

可变参数

现在让我们看看php5.6的新变参语法…$args。

function foo(...$args)
{
    $numargs = count($args);
    echo "Number of arguments: $numargs<br />\n";
    if ($numargs >= 2) {
        echo "Second argument is: " . func_get_arg(1) . "<br />\n";
    }
    $arg_list = $args;
    for ($i = 0; $i < $numargs; $i++) {
        echo "Argument $i is: " . $arg_list[$i] . "<br />\n";
    }

}

foo(1,2,3);

另外…$args可以直接传数组,支持在内部解包,这样先在外部把参数组装好,更优雅,如

$args = [1,2,3];
foo(...$args);