我应该在这里做什么?
=& 参考
参考任务操作员在PHP, =& 什么意思是“=&”和“&="操作员在PHP? 什么意思是“&=”和“=&”操作员在PHP?
PHP 中的奇怪打印行为?
= 任命运营商
三种不同的平等
如何区分PHP平等(==双等)和身份(===三等)比较操作员?PHP!=和 ==操作员3个不同的平等类型和(严格)较大的/较小的比较在PHP
=== 比较运营商
比特币运营商
上一篇: 逻辑运营商
[ ] Arrays (自 PHP 5.4 以来简短的合成)
PHP 短标签是否可用?
二角形字符范围
# One-line shell 风格评论
NullSafe Operator 通话(自 PHP 8.0 以来)
PHP 中有“零安全操作员”吗?
增加 / 减少运营商
+ 增强运营商
排斥运营商
Example Name Effect
---------------------------------------------------------------------
++$a Pre-increment Increments $a by one, then returns $a.
$a++ Post-increment Returns $a, then increments $a by one.
--$a Pre-decrement Decrements $a by one, then returns $a.
$a-- Post-decrement Returns $a, then decrements $a by one.
它可以在变量之前或之后进行。
例如:
$apples = 10;
for ($i = 0; $i < 10; ++$i) {
echo 'I have ' . $apples-- . " apples. I just ate one.\n";
}
活例子
在上述情况下 ++$i 使用,因为它更快。
预增略略快一点,因为它真的增加了变量,然后“返回”结果,后增略创造了一个特殊变量,复制了第一个变量的值,只有在第一个变量被使用后,它将其值取代为第二个。
但是,你必须使用 $ 苹果 - 因为首先,你想显示目前的苹果数量,然后你想从它中提取一个。
$i = "a";
while ($i < "c") {
echo $i++;
}
一旦 z 到达 aa 是下一个,等等。
请注意,字符变量可以增加,但不能减少,即使如此,只有平坦的 ASCII 字符(a-z 和 A-Z)得到支持。
Stack Overflow 文章:
理解增加
增加 / 减少运营商
+ 增强运营商
排斥运营商
Example Name Effect
---------------------------------------------------------------------
++$a Pre-increment Increments $a by one, then returns $a.
$a++ Post-increment Returns $a, then increments $a by one.
--$a Pre-decrement Decrements $a by one, then returns $a.
$a-- Post-decrement Returns $a, then decrements $a by one.
它可以在变量之前或之后进行。
例如:
$apples = 10;
for ($i = 0; $i < 10; ++$i) {
echo 'I have ' . $apples-- . " apples. I just ate one.\n";
}
活例子
在上述情况下 ++$i 使用,因为它更快。
预增略略快一点,因为它真的增加了变量,然后“返回”结果,后增略创造了一个特殊变量,复制了第一个变量的值,只有在第一个变量被使用后,它将其值取代为第二个。
但是,你必须使用 $ 苹果 - 因为首先,你想显示目前的苹果数量,然后你想从它中提取一个。
$i = "a";
while ($i < "c") {
echo $i++;
}
一旦 z 到达 aa 是下一个,等等。
请注意,字符变量可以增加,但不能减少,即使如此,只有平坦的 ASCII 字符(a-z 和 A-Z)得到支持。
Stack Overflow 文章:
理解增加
Null Coalesce 操作器 “??” (在 PHP 7 中添加)
不是一个运营商最受欢迎的名称,但PHP 7带来了相当方便的零冷却,所以我认为我会分享一个例子。
在PHP 5中,我们已经有一个特纳操作器,测试一个值,然后返回第二个元素,如果它返回真实,第三个元素,如果它没有:
echo $count ? $count : 10; // outputs 10
在PHP 7中,我们还获得了操作员,而不是指示极端的混乱,这就是我通常会使用两个问题标志相结合的方式,而不是允许我们连接一行值。
// $a is not set
$b = 16;
echo $a ?? 2; // outputs 2
echo $a ?? $b ?? 7; // outputs 16
这个结构是有用的,以优先考虑一个或多个值来自用户输入或现有配置,并安全地落后于一个特定的默认设置,如果该配置缺乏。
在 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"
NullSafe 运营商
在 PHP 8.0 中添加
它是 NullSafe 运营商,如果您尝试引用函数或从零中获取值,则返回零。
$objDrive = null;
$drive = $objDrive?->func?->getDriver()?->value; //return null
$drive = $objDrive->func->getDriver()->value; // Error: Trying to get property 'func' of non-object
Nullsafe 运营商不使用序列密钥:
$drive['admin']?->getDriver()?->value //Warning: Trying to access array offset on value of type null
$drive = [];
$drive['admin']?->getAddress()?->value //Warning: Undefined array key "admin"
问题:
“&”在PHP中意味着什么?
PHP “&” 操作员
使生活更容易,一旦我们习惯了(仔细检查下面的例子)
通常会设置为 $a 和 $b 的检查比特。
你甚至注意到这些电话是如何工作的吗?
error_reporting(E_ERROR | E_WARNING | E_PARSE);
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
error_reporting(E_ALL & ~E_NOTICE);
error_reporting(E_ALL);
因此,上面的一切背后是比特币运营商和比特币的游戏。
其中一个有用的案例是简单的配置,如下所示,这样一个完整的字段可以为您存储成千上万的组合。
大多数人已经阅读了这些文件,但并没有依赖于这些小型运营商的现实世界使用案例。
假设你会爱的
<?php
class Config {
// our constants must be 1,2,4,8,16,32,64 ....so on
const TYPE_CAT=1;
const TYPE_DOG=2;
const TYPE_LION=4;
const TYPE_RAT=8;
const TYPE_BIRD=16;
const TYPE_ALL=31;
private $config;
public function __construct($config){
$this->config=$config;
if($this->is(Config::TYPE_CAT)){
echo 'cat ';
}
if($this->is(Config::TYPE_DOG)){
echo 'dog ';
}
if($this->is(Config::TYPE_RAT)){
echo 'rat ';
}
if($this->is(Config::TYPE_LION)){
echo 'lion ';
}
if($this->is(Config::TYPE_BIRD)){
echo 'bird ';
}
echo "\n";
}
private function is($value){
return $this->config & $value;
}
}
new Config(Config::TYPE_ALL);
// cat dog rat lion bird
new Config(Config::TYPE_BIRD);
//bird
new Config(Config::TYPE_BIRD | Config::TYPE_DOG);
//dog bird
new Config(Config::TYPE_ALL & ~Config::TYPE_DOG & ~Config::TYPE_CAT);
//rat lion bird