基本的赋值运算符是“=”。一开始可能会以为它是“等於”,其实不是的。它实际上意味着把右边表达式的值赋给左边的运算数
下图为算术赋值运算符
例子 | 等同於 | 操作 |
---|---|---|
$a += $b | $a = $a + $b | 加法 |
$a -= $b | $a = $a - $b | 减法 |
$a *= $b | $a = $a * $b | 乘法 |
$a /= $b | $a = $a / $b | 除法 |
$a %= $b | $a = $a % $b | 取余数 |
$a **= $b | $a = $a ** $b | 指数 |
下图为其他赋值运算符
例子 | 等同於 | 操作 |
---|---|---|
$a .= $b | $a = $a . $b | 字符串拼接 |
$a ?? $b | $a = $a ?? $b | NULL合并 |
位运算符允许对整型数中指定的位进行求值和操作。
下图为位元运算符号
例子 | 名称 | 结果 |
---|---|---|
$a & $b | And(按位与) | 将把 $a 和 $b 中都为 1 的位设为 1。 |
$a | $b | Or(按位或) | 将把 $a 和 $b 中任何一个为 1 的位设为 1。 |
$a ^ $b | Xor(按位异或) | 将把 $a 和 $b 中一个为 1 另一个为 0 的位设为 1。 |
~ $a | Not(按位取反) | 将 $a 中为 0 的位设为 1,反之亦然。 |
$a << $b | Shift left(左移) | 将 $a 中的位向左移动 $b 次(每一次移动都表示“乘以 2”)。 |
$a >> $b | Shift right(右移) | 将 $a 中的位向右移动 $b 次(每一次移动都表示“除以 2”)。 |
比较运算符,如同它们名称所暗示的,允许对两个值进行比较。
例子 | 名称 | 结果 |
---|---|---|
$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,或者它们的类型不同。 |
$a < $b | 小於 | true,如果 $a 严格小於 $b。 |
$a > $b | 大於 | true,如果 $a 严格大於 $b。 |
$a <= $b | 小於等於 | true,如果 $a 小於或者等於 $b。 |
$a >= $b | 大於等於 | true,如果 $a 大於或者等於 $b。 |
$a <=> $b | 太空船运算符(组合比较符) | 当$a小於、等於、大於 $b时 分别返回一个小於、等於、大於0的 int 值。 |
PHP 支持一个执行运算符:反引号(``)。注意这不是单引号! PHP 将尝试将反引号中的内容作为 shell 命令来执行,并将其输出信息返回(即,可以赋给一个变量而不是简单地丢弃到标准输出)。使用反引号运算符“`”的效果与函数 shell_exec() 相同。
<?php
$output = `ipconfig /all`;
echo "<pre>$output</pre>"; // 输出所有IP资讯
?>
注意: 递增/递减运算符不影响布尔值。递减 null 值也没有效果,但是递增 null 的结果是 1。
例子 | 名称 | 效果 |
---|---|---|
++$a | 先加 | $a 的值加一,然後返回 $a。 |
$a++ | 後加 | 返回 $a,然後将 $a 的值加一。 |
--$a | 先减 | $a 的值减一, 然后返回 $a。 |
$a-- | 後减 | 返回 $a,然後将 $a 的值减一。 |
简易的范例
<?php
echo "後增量(PostIncrement)\n";
$a = 5;
echo "Should be 5: " . $a++ . "<br />\n";
echo "Should be 6: " . $a . "<br />\n";
echo "先增量(PreIncrement)\n";
$a = 5;
echo "Should be 6: " . ++$a . "<br />\n";
echo "Should be 6: " . $a . "<br />\n";
echo "後减(PostDecrement)\n";
$a = 5;
echo "Should be 5: " . $a-- . "<br />\n";
echo "Should be 4: " . $a . "<br />\n";
echo "先减(Predecrement)\n";
$a = 5;
echo "Should be 4: " . --$a . "<br />\n";
echo "Should be 4: " . $a . "<br />\n";
?>
例子 | 名称 | 结果 | |
---|---|---|---|
$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。 |
有两个字符串(string)运算符。第一个是连接运算符(“.”),它返回其左右参数连接後的字符串。第二个是连接赋值运算符(“.=”),它将右边参数附加到左边的参数之後。
范例程序码
<?php
$a = "Hello ";
$b = $a . "World!";
echo $b."\n"; // output "Hello World!"
$a = "Hello ";
$a .= "World!"; // output "Hello World!"
echo $a;
?>
例子 | 名称 | 结果 |
---|---|---|
$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。 |
如果是运用运算符将数组相加,会把加号右边的附加到加号左边数组,
两个数组中都有的键名,则只用左边数组中的,右边的被忽略
以下简单范例示范:
<?php
$a = array("a" => "apple", "b" => "banana");
$b = array("a" => "pear", "b" => "strawberry", "c" => "cherry");
$c = $a + $b; // Union of $a and $b
var_dump($c);
$c = $b + $a; // Union of $b and $a
var_dump($c);
// 输出:
// array(3) {
// ["a"]=>
// string(5) "apple"
// ["b"]=>
// string(6) "banana"
// ["c"]=>
// string(6) "cherry"
// }
// array(3) {
// ["a"]=>
// string(4) "pear"
// ["b"]=>
// string(10) "strawberry"
// ["c"]=>
// string(6) "cherry"
// }
?>
以下示范比较数组
<?php
$a = array("apple", "banana");
$b = array(1 => "banana", "0" => "apple");
var_dump($a == $b); // bool(true)
var_dump($a === $b); // bool(false)
?>
instanceof 方法用於确定一个 PHP 变数是否属於某一类 class 的实例,
也可以用来确认某一个变数,是否继承自某一父类或子类的实例。
以下范例
<?php
class MyClass
{
}
class NotMyClass
{
}
$a = new MyClass;
var_dump($a instanceof MyClass);
var_dump($a instanceof NotMyClass);
?>
// 输出
// bool(True)
// bool(False)
资料来源: https://www.php.net/
>>: Day 3 Compose UI Hello World
昨天发现 Threshold Alert 的设计无法符合我的选股程序的需求,今天来看看 Advanc...
Day26- 新手的Web系列CRLF 0x1 正文 CRLF(CRLF Injection Att...
Although YouTube Music hit the global market a few...
嗨,各位 经过了30天,最後一天让我说些感言ㄅ 首先我得先检讨一下自己 到後面都在打水仗啦rrrrr...
制造业是台湾经济的生力军,疫情延烧并未影响营运,资安事件反而成为不定时炸弹,造成企业商誉甚或营收受损...