递增(减)运算符
常见递增(减)运算符
++$a
,$a 的值加一返回 $a。$a++
,返回 $a,然后将 $a 的值加一。--$a
,$a 的值减一返回 $a。$a--
,返回 $a,然后将 $a 的值减一。
递增(减)运算符对布尔和 NULL 类型的影响
<?php
$a = null;
$b = true;
var_dump(++$a, --$a, ++$b, --$b);
结果输出
int(1)
int(0)
bool(true)
bool(true)
布尔值不受影响,NULL 递增为 1,递减为 0
<?php
$a = 0;
$i = 'W';
while($a < 6) {
echo "$a : ".++$i . PHP_EOL;
$a++;
}
结果输出
0 : X
1 : Y
2 : Z
3 : AA
4 : AB
5 : AC
从结果可知
在处理字符变量的算数运算时,PHP 沿袭了 Perl 的习惯,而非 C 的。例如
$a = 'Z';
// Perl 中
$a++;//将把 $a 变成'AA'
//C 中
$a++;//将把 $a 变成 '['('Z' 的 ASCII 值是 90,'[' 的 ASCII 值是 91)
注意字符变量只能递增,不能递减,并且只支持纯字母(a-z 和 A-Z)。递增(减)其他字符变量则无效,原字符串没有变化。
逻辑运算符
常见逻辑运算符
$a and $b
,逻辑与,如果 $a 和 $b 都为 TRUE$a && $b
,逻辑与,如果 $a 和 $b 都为 TRUE,其中&&
优先级高于and
$a or $b
,逻辑或,如果 $a 或 $b 任一为 TRUE$a || $b
,逻辑或,如果 $a 或 $b 任一为 TRUE,||
优先级高于or
$a xor $b
,逻辑异或,如果 $a 或 $b 任一为 TRUE,但不同时是,则返回 TRUE! $a
,逻辑非,如果 $a 不为 TRUE
<?php
$a = (false && foo());
$b = (true || foo());
$c = (false and foo());
$d = (true or foo());
var_dump($a, $b, $c, $d);
// --------------------
// "||" 比 "or" 的优先级高
// 表达式 (false || true) 的结果被赋给 $e
// 等同于:($e = (false || true))
$e = false || true;
// 常量 false 被赋给 $f,true 被忽略
// 等同于:(($f = false) or true)
$f = false or true;
// --------------------
// "&&" 比 "and" 的优先级高
// 表达式 (true && false) 的结果被赋给 $g
// 等同于:($g = (true && false))
$g = true && false;
// 常量 true 被赋给 $h,false 被忽略
// 等同于:(($h = true) and false)
$h = true and false;
var_dump($e, $f, $g, $h);
执行
bool(false)
bool(true)
bool(false)
bool(true)
bool(true)
bool(false)
bool(false)
bool(true)
从结果可知
foo()
虽然没有定义,但是并没有机会执行,因为之前的表达式已经确定结果,foo()
被短路。&&
,||
的优先级高于=
,=
的优先级高于and
,or
。
字符串运算符
有两个字符串运算符。
- 第一个是连接运算符
.
,它返回其左右参数连接后的字符串 - 第二个是连接赋值运算符
.=
,它将右边参数附加到左边的参数后。
<?php
$a = "Hello ";
$b = $a . "World!"; // now $b contains "Hello World!"
$a = "Hello ";
$a .= "World!"; // now $a contains "Hello World!"
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论(0)