我应该在这里做什么?
=& 参考
参考任务操作员在PHP, =& 什么意思是“=&”和“&="操作员在PHP? 什么意思是“&=”和“=&”操作员在PHP?
PHP 中的奇怪打印行为?
= 任命运营商
三种不同的平等
如何区分PHP平等(==双等)和身份(===三等)比较操作员?PHP!=和 ==操作员3个不同的平等类型和(严格)较大的/较小的比较在PHP
=== 比较运营商
比特币运营商
上一篇: 逻辑运营商
[ ] Arrays (自 PHP 5.4 以来简短的合成)
PHP 短标签是否可用?
二角形字符范围
# One-line shell 风格评论
NullSafe Operator 通话(自 PHP 8.0 以来)
PHP 中有“零安全操作员”吗?
零加热运营商(??)
此操作员已在 PHP 7.0 中添加到常见情况下,需要与 isset() 一起使用终端操作员,如果存在并非 NULL,则将其第一个操作员返回;否则将其第二个操作员返回。
<?php
// Fetches the value of $_GET['user'] and returns 'nobody'
// if it does not exist.
$username = $_GET['user'] ?? 'nobody';
// This is equivalent to:
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';
// Coalescing can be chained: this will return the first
// defined value out of $_GET['user'], $_POST['user'], and
// 'nobody'.
$username = $_GET['user'] ?? $_POST['user'] ?? 'nobody';
?>
在 PHP 8 中
而不是写经典!== null 你可以使用操作员写一行代码,代码变得相当清晰:
之前:
$firsName = null;
if ($session !== null) {
$user = $session->user;
if ($user !== null) {
$name = $user->getName();
if ($name !== null) {
$firstName = $name->firstName;
}
}
}
之后:
$firsName = $session?->user?->getName()?->firstName;
使用对比而不是交换. 对比表达使用严格的比较(===) 相反. 对比是严格的,无论严格的类型。
之前:
switch ('A') {
case 'A':
echo "found A";
break;
case 'B':
echo "found B";
break;
}
// Result: "found A"
之后:
echo match ('A') {
'A' => "found A",
'B' => "found B",
};
// Result: "found A"
运营商类型
instanceof 是用来确定一个 PHP 变量是否是一个特定的类别的即时对象。
<?php
class mclass { }
class sclass { }
$a = new mclass;
var_dump($a instanceof mclass);
var_dump($a instanceof sclass);
上面的例子将产生:
bool(true)
bool(false)
原因: 上例 $a 是 mclass 的对象,所以只使用 mclass 数据而不是 sclass 的例子。
继承的例子
<?php
class pclass { }
class childclass extends pclass { }
$a = new childclass;
var_dump($a instanceof childclass);
var_dump($a instanceof pclass);
上面的例子将产生:
bool(true)
bool(true)
与克隆的例子
<?php
class cloneable { }
$a = new cloneable;
$b = clone $a;
var_dump($a instanceof cloneable);
var_dump($b instanceof cloneable);
上面的例子将产生:
bool(true)
bool(true)
<=> 航天运营商
在 PHP 7 中添加
太空运营商 <=> 是 PHP 7 中添加的最新比较运营商。 它是一种与平等运营商相同的优先事项的非协作二进制运营商(==,!=, ===,!==)。 该运营商允许左手和右手运营商之间的简单三路比较。
运营商以一个完整的表达结果:
0 如果两位操作员均等 低于 0 如果左手操作员低于右手操作员 大于 0 如果左手操作员高于右手操作员
吉。
1 <=> 1; // 0
1 <=> 2; // -1
2 <=> 1; // 1
使用这个运营商的好实用应用将是比较类型的呼叫回归,预计将基于两个值之间的三路比较,返回零、负或积极的整体。
在PHP 7之前,你会写...
$arr = [4,2,1,3];
usort($arr, function ($a, $b) {
if ($a < $b) {
return -1;
} elseif ($a > $b) {
return 1;
} else {
return 0;
}
});
因为 PHP 7 你可以写...
$arr = [4,2,1,3];
usort($arr, function ($a, $b) {
return $a <=> $b;
// return $b <=> $a; // for reversing order
});