首頁 > php教程 > php手册 > 主體

php(3)运算符、流程控制

WBOY
發布: 2016-06-06 19:41:53
原創
915 人瀏覽過

一、 运算符 1、算术 运算符 -$a 取反 $a 的负。 $a $b 加法 $a 和 $b 的和。 $a - $b 减法 $a 和 $b 的差。 $a * $b 乘法 $a 和 $b 的积。 $a / $b 除法 $a 除以 $b 的商。 $a % $b 取模 $a 除以 $b 的余数。 注意: 一般情况下除法 运算符 返回浮点数。但

一、运算符

1、算术运算符

-$a 取反 $a 的负值。
$a + $b 加法 $a$b 的和。
$a - $b 减法 $a$b 的差。
$a * $b 乘法 $a$b 的积。
$a / $b 除法 $a 除以 $b 的商。
$a % $b 取模 $a 除以 $b 的余数。
注意:

一般情况下除法运算符返回浮点数。但如果两个操作数都是整数(或字符串转换成的整数)并且正好能整除,这时它返回一个整数。

取模运算符的操作数在运算之前都会转换成整数(除去小数部分)。

取模运算符 % 的结果和被除数的符号相同。即 $a % $b 的结果和 $a 的符号相同。

2、位运算符

<span>$a & $b</span> And(按位与) 将把 $a$b 中都为 1 的位设为 1。
<span>$a | $b</span> Or(按位或) 将把 $a$b 中任何一个为 1 的位设为 1。
<span>$a ^ $b</span> Xor(按位异或) 将把 $a$b 中一个为 1 另一个为 0 的位设为 1。
<span>~ $a</span> Not(按位取反) $a 中为 0 的位设为 1,反之亦然。
<span>$a </span> Shift left(左移) $a 中的位向左移动 $b 次(每一次移动都表示"乘以 2")。
<span>$a >> $b</span> Shift right(右移) $a 中的位向右移动 $b 次(每一次移动都表示"除以 2")。
注意:位移在 PHP 中是数学运算。向任何方向移出去的位都被丢弃。左移时右侧以零填充,符号位被移走意味着正负号不被保留。右移时左侧以符号位填充,意味着正负号被保留。

3、比较运算符

$a == $b 等于 TRUE,如果类型转换后 $a 等于 $b
$a === $b 全等 TRUE,如果 $a 等于 $b,并且它们的类型也相同。
$a != $b 不等 TRUE,如果类型转换后 $a 不等于 $b
$a $b 不等 TRUE,如果类型转换后 $a 不等于 $b
$a !== $b 不全等 TRUE,如果 $a 不等于 $b,或者它们的类型不同。
<span>$a </span> 小与 TRUE,如果 $a 严格小于 $b
$a > $b 大于 TRUE,如果 $a 严格大于 $b
<span>$a </span> 小于等于 TRUE,如果 $a 小于或者等于 $b
$a >= $b 大于等于 TRUE,如果 $a 大于或者等于 $b
注意:如果比较一个数字和字符串或者比较涉及到数字内容的字符串,则字符串会被转换为数值并且比较按照数值来进行。

对于多种类型,比较运算符根据下表比较:

null或string   string NULL 转换为 "",进行数字或词汇比较
 bool或null 任何其它类型 转换为bool,FALSE TRUE
object object 内置类可以定义自己的比较,不同类不能比较,相同类和数组同样方式比较属性(PHP 4 中),PHP 5 有其自己的说明
string,resource或number string,resource或number 将字符串和资源转换成数字,按普通数学比较
array array 具有较少成员的数组较小,如果运算数 1 中的键不存在于运算数 2 中则数组无法比较,否则挨个值比较(见下例)
object 任何其它类型 object总是更大
array 任何其它类型 array总是更大
4、错误控制运算符

PHP 支持一个错误控制运算符:@当将其放置在一个 PHP 表达式之前,该表达式可能产生的任何错误信息都被忽略掉。

5、执行运算符

PHP 支持一个执行运算符:反引号(``)。PHP 将尝试将反引号中的内容作为外壳命令来执行,并将其输出信息返回。

6、自增/自减运算符

++$a 前加 $a 的值加一,然后返回 $a
$a++ 后加 返回 $a,然后将 $a 的值加一。
--$a 前减 $a 的值减一, 然后返回 $a
$a-- 后减 返回 $a,然后将 $a 的值减一。
7、逻辑运算符

$a and $b And(逻辑与) TRUE,如果 $a$b 都为 TRUE
$a or $b Or(逻辑或) TRUE,如果 $a$b 任一为 TRUE
$a xor $b Xor(逻辑异或) TRUE,如果 $a$b 任一为 TRUE,但不同时是。
! $a Not(逻辑非) TRUE,如果 $a 不为 TRUE
$a && $b And(逻辑与) TRUE,如果 $a$b 都为 TRUE
$a || $b Or(逻辑或) TRUE,如果 $a$b 任一为 TRUE
8、数组运算符

$a + $b 联合 $a $b 的联合。
$a == $b 相等 如果 $a $b 具有相同的键/值对则为 TRUE
$a === $b 全等 如果 $a $b 具有相同的键/值对并且顺序和类型都相同则为 TRUE
$a != $b 不等 如果 $a 不等于 $b 则为 TRUE
$a $b 不等 如果 $a 不等于 $b 则为 TRUE
$a !== $b 不全等 如果 $a 不全等于 $b 则为 TRUE

9、类型运算符

instanceof 用于确定一个 PHP 变量是否属于某一类class的实例。

10、运算符优先级

结合方向

运算符

clone new

[

++ -- ~ (int) (float) (string) (array) (object) (bool) @

instanceof

!

* / %

+ - .

>

== != === !==

&

^

|

&&

||

? :

= += -= *= /= .= %= &= |= ^= >= =>

and

xor

or

,


二、流程控制

if else语句;

三元运算符:(expr)?(contents):(contents),与C语言类似;

switch case语句;

for、wihle、do while循环;

break、continue跳转语句;

foreach循环:

<span>foreach (array_expression as $value)
    statement
foreach (array_expression as $key => $value)
    statement</span>
登入後複製
return 语句;

require与include语句:作用都是包含并运行指定文件。但处理失败的方式不同,require 在出错时产生 E_COMPILE_ERROR 级别的错误,导致脚本中止执行,而include只产生警告(E_WARNING),脚本会继续运行。

include_once与require_once语句:与include语句类似,唯一区别是如果该文件中已经被包含过,则不会再次包含。

goto语句:goto 操作符可以用来跳转到程序中的另一位置。该目标位置可以用目标名称加上冒号来标记,而跳转指令是 goto 之后接上目标位置的标记。PHP 中的 goto 有一定限制,目标位置只能位于同一个文件和作用域,也就是说无法跳出一个函数或类方法,也无法跳入到另一个函数。也无法跳入到任何循环或者 switch 结构中。可以跳出循环或者 switch,通常的用法是用 goto 代替多层的 break

ddeclare语句:

declare 结构用来设定一段代码的执行指令。

declare (directive)
    statement
登入後複製
directive 部分允许设定 declare 代码段的行为。目前只认识两个指令:ticks以及 encoding

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

不是所有语句都可计时。通常条件表达式和参数表达式都不可计时。

在每个 tick 中出现的事件是由register_tick_function()来指定的。

例:

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);
}

输出:tick_handler() called tick_handler() called tick_handler() called 3tick_handler() called tick_handler() called tick_handler() called tick_handler() called

解释一下所谓的低级语句:主要包括statement, function_declare_statement, class_declare_statement。

statement包括:

(1) 简单语句:空语句(就一个;号),return,break,continue,throw, goto,global,static,unset,echo, 内置的HTML文本,分号结束的表达式等均算一个语句。

(2) 复合语句:完整的if/elseif,while,do...while,for,foreach,switch,try...catch等算一个语句。

(3) 语句块:{} 括出来的语句块。

解释上面输出的原因:

1、$a = 1;

2、if语句判断条件成立;

3、$a +=2;

4、print语句;(故前面输出3次tick_handler() called后输出$a即3;)

5、if语句条件不成立;

6、函数tick_handler()定义语句;

7、register_tick_handler()语句;

8、declare()语句。(故再次输出4次tick_handler() called)



 
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門推薦
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板