引用 — 这个符号在 PHP 中是什么意思?按位运算符一些示例,以便更好地理解

2022-08-30 05:43:37

这是怎麽?

这是一系列关于PHP中语法的问题。这也是一个社区维基,因此邀请每个人参与维护此列表。

这是为什么呢?

过去很难找到有关运算符和其他语法标记的问题¹
主要思想是链接到Stack Overflow上的现有问题,因此我们更容易引用它们,而不是复制PHP手册中的内容。

注意:自 2013 年 1 月起,堆栈溢出支持特殊字符。只需用引号将搜索词括起来,例如 [php] “==” vs “===”

我在这里该怎么办?

如果您因为问了这样的问题而被某人指向此处,请在下面找到特定的语法。PHP手册的链接页面以及链接的问题可能会回答您的问题。如果是这样,我们鼓励您为答案投赞成票。此列表并不意味着可以替代其他人提供的帮助。

列表

如果您的特定令牌未在下面列出,您可能会在解析器令牌列表中找到它。


& 按位运算符引用


=& 引用


&= 按位运算符


&& 逻辑运算符


% 算术运算符


!! 逻辑运算符


@ 错误控制操作员


?: 三元算子


?? 空合并运算符(自 PHP 7 起)


?string ?int ?array ?bool ?float 可为 null 的返回类型声明(自 PHP 7.1 起)


: 控制结构的替代语法三元运算符返回类型声明


:: 范围解析运算符


\ 命名空间


-> 类和对象


=> 阵 列


^ 按位运算符


>> 按位运算符


<< 按位运算符


<<< 赫雷多克或诺多克


= 赋值运算符


== 比较运算符


=== 比较运算符


!== 比较运算符


!= 比较运算符


<> 比较运算符


<=> 比较运算符(自 PHP 7.0 起)


| 按位运算符


|| 逻辑运算符


~ 按位运算符


+ 算术运算符数组运算符


+=赋值运算符-=


++递增/递减运算符--


.= 赋值运算符


. 字符串运算符


, 函数参数

, 变量声明


$$ 变量


` 执行运算符


<?= 短开放标签


[] 数组(自 PHP 5.4 起的短语法)


<? 开始和结束标记


..双点字符范围


... 参数解压缩(自 PHP 5.6 起)


** 幂(自 PHP 5.6 起)


# 单行外壳样式注释


?-> 空值安全操作员调用(自 PHP 8.0 起)



答案 1

递增/递减运算符

++增量运算符

--递减运算符

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++

预增量稍微快一点,因为它确实增加了变量,之后“返回”结果。后递增创建一个特殊变量,将第一个变量的值复制到该变量,并且仅在使用第一个变量后,将其值替换为第二个变量的值。

但是,您必须使用 ,因为首先要显示当前数量的苹果,然后要从中减去一个。$apples--

您还可以在 PHP 中递增字母:

$i = "a";
while ($i < "c") {
    echo $i++;
}

到达一次就是下一次,依此类推。zaa

请注意,字符变量可以递增,但不能递减,即使如此,也仅支持普通 ASCII 字符(a-z 和 A-Z)。


堆栈溢出柱:


答案 2

按位运算符

什么是位?位表示 1 或 0。基本上关闭(0) 和打开(1)

什么是字节?一个字节由 8 位组成,一个字节的最高值为 255,这意味着每个位都已设置。我们将了解为什么字节的最大值为 255。

-------------------------------------------
|      1 Byte ( 8 bits )                  |
-------------------------------------------
|Place Value | 128| 64| 32| 16| 8| 4| 2| 1|     
-------------------------------------------

1 字节的此表示形式

1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 = 255 (1 字节)

一些示例,以便更好地理解

“AND”运算符:&

$a =  9;
$b = 10;
echo $a & $b;

这将输出数字 8。为什么?好吧,让我们看看使用我们的表示例。

-------------------------------------------
|      1 Byte ( 8 bits )                  |
-------------------------------------------
|Place Value | 128| 64| 32| 16| 8| 4| 2| 1|     
-------------------------------------------
|      $a    |   0|  0|  0|  0| 1| 0| 0| 1|    
-------------------------------------------
|      $b    |   0|  0|  0|  0| 1| 0| 1| 0|
------------------------------------------- 
|      &     |   0|  0|  0|  0| 1| 0| 0| 0|
------------------------------------------- 

因此,您可以从表中看到,他们共享在一起的唯一位是8位。

第二个示例

$a =  36;
$b = 103;
echo $a & $b; // This would output the number 36.
$a = 00100100
$b = 01100111

两个共享位分别为 32 和 4,当它们加在一起时返回 36。

“Or”运算符:|

$a =  9;
$b = 10;
echo $a | $b;

这将输出数字 11。为什么?

-------------------------------------------
|      1 Byte ( 8 bits )                  |
-------------------------------------------
|Place Value | 128| 64| 32| 16| 8| 4| 2| 1|     
-------------------------------------------
|      $a    |   0|  0|  0|  0| 1| 0| 0| 1|    
-------------------------------------------
|      $b    |   0|  0|  0|  0| 1| 0| 1| 0|
------------------------------------------- 
|      |     |   0|  0|  0|  0| 1| 0| 1| 1|
-------------------------------------------

您会注意到,我们在 8、2 和 1 列中设置了 3 位。这些加起来:8 + 2 + 1 = 11。


推荐