协慌网

登录 贡献 社区

参考 - 这个符号在 PHP 中意味着什么?

这是什么?

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

为什么是这样?

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

¹ 注意:自 2013 年 1 月起,Stack Overflow 确实支持特殊字符 。只需用引号括起搜索词,例如[php] "==" vs "==="

我该怎么办?

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

列表

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


& 按位运算符引用


=& 参考文献


&= 按位运算符


&& 逻辑运算符


% 算术运算符


!! 逻辑运算符


@ 错误控制操作符


?: 三元运算符


?? Null Coalesce 运算符 (自 PHP 7 起)


: 控制结构的替代语法三元运算符


:: 范围解析运算符


\ 命名空间


-> 类和对象


=> 数组


^ 按位运算符


>> 按位运算符


<< 按位运算符


<<< Heredoc 或 Nowdoc


= 分配运营商


== 比较运算符


=== 比较运算符


!== 比较运算符


!= 比较运算符


<> 比较运算符


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


| 按位运算符


|| 逻辑运算符


~ 按位运算符


+ 算术运算符数组运算符


+=-= 赋值运算符


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


.= 分配运营商


. 字符串运算符


, 功能参数

, 变量声明


$$ 变量变量


` 执行运营商


<?= 短开标签


[] 数组 (PHP 5.4 以来的短语法)


<? 打开和关闭标签


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


** Exponentiation (自 PHP 5.6 起)


# 单行 shell 风格的评论


答案

递增 / 递减运算符

++增量运算符

--递减运算符

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

一旦达到z接下来是aa ,依此类推。

请注意,字符变量可以递增但不递减,即使只支持纯 ASCII 字符(az 和 AZ)。


Stack Overflow 帖子:

按位运算符

有点什么?位是 1 或 0 的表示。基本上为 OFF(0)和 ON(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。

“或” 运算符: |

$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。

_ gettext()的别名

_()的下划线字符 “_” 是gettext()函数的别名。